Version 2.18.0-212.0.dev

Merge commit '3326738913a08b3423bffbef6642a49fd8099ca0' into 'dev'
diff --git a/pkg/dart2js_info/CONTRIBUTING.md b/pkg/dart2js_info/CONTRIBUTING.md
deleted file mode 100644
index 6f5e0ea..0000000
--- a/pkg/dart2js_info/CONTRIBUTING.md
+++ /dev/null
@@ -1,33 +0,0 @@
-Want to contribute? Great! First, read this page (including the small print at
-the end).
-
-### Before you contribute
-Before we can use your code, you must sign the
-[Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual)
-(CLA), which you can do online. The CLA is necessary mainly because you own the
-copyright to your changes, even after your contribution becomes part of our
-codebase, so we need your permission to use and distribute your code. We also
-need to be sure of various other things—for instance that you'll tell us if you
-know that your code infringes on other people's patents. You don't have to sign
-the CLA until after you've submitted your code for review and a member has
-approved it, but you must do it before we can put your code into our codebase.
-
-Before you start working on a larger contribution, you should get in touch with
-us first through the issue tracker with your idea so that we can help out and
-possibly guide you. Coordinating up front makes it much easier to avoid
-frustration later on.
-
-### Code reviews
-All submissions, including submissions by project members, require review.
-
-### File headers
-All files in the project must start with the following header.
-
-    // Copyright (c) 2015, 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.
-
-### The small print
-Contributions made by corporations are covered by a different agreement than the
-one above, the
-[Software Grant and Corporate Contributor License Agreement](https://developers.google.com/open-source/cla/corporate).
diff --git a/pkg/dart2js_info/README.md b/pkg/dart2js_info/README.md
index 1cfc18f..ffb942e 100644
--- a/pkg/dart2js_info/README.md
+++ b/pkg/dart2js_info/README.md
@@ -35,15 +35,9 @@
 
 ## Tools
 
-All tools are provided as commands of a single command-line interface. To
-install:
+All tools are provided as commands of a single command-line interface. To run:
 ```console
-pub global activate dart2js_info
-```
-
-To run a tool, then run:
-```console
-dart2js_info <command> [arguments]
+$ dart bin/tools.dart <command> [arguments]
 ```
 
 There is a short help available on the tool, and more details are provided
@@ -152,9 +146,7 @@
 
 Run this tool as follows:
 ```console
-# activate is only needed once to install the dart2js_info tool
-$ pub global activate dart2js_info
-$ dart2js_info code_deps some_path out.js.info.data main foo
+$ dart bin/tools.dart code_deps some_path out.js.info.data main foo
 ```
 
 The arguments to the query are regular expressions that can be used to
@@ -175,8 +167,7 @@
 run as follows:
 
 ```console
-$ pub global activate dart2js_info # only needed once
-$ dart2js_info common old.js.info.data new.js.info.data
+$ dart bin/tools.dart common old.js.info.data new.js.info.data
 ```
 
 The tool gives a breakdown of the common elements between the two info files,
@@ -213,8 +204,7 @@
 as follows:
 
 ```console
-$ pub global activate dart2js_info # only needed once
-$ dart2js_info diff old.js.info.data new.js.info.data [--summary]
+$ dart bin/tools.dart diff old.js.info.data new.js.info.data [--summary]
 ```
 
 The tool gives a breakdown of the difference between the two info files.
@@ -285,8 +275,7 @@
 libraries. It can be run as follows:
 
 ```console
-$ pub global activate dart2js_info # only needed once
-$ dart2js_info library_size out.js.info.data
+$ dart bin/tools.dart library_size out.js.info.data
 ```
 
 
@@ -295,7 +284,7 @@
 with the `--grouping` flag:
 
 ```console
-$ dart2js_info library_size out.js.info.data --grouping grouping.yaml
+$ dart bin/tools.dart library_size out.js.info.data --grouping grouping.yaml
 ```
 
 The format of the `grouping.yaml` file is as follows:
@@ -366,8 +355,7 @@
 given in a YAML file. It can be run as follows:
 
 ```console
-$ pub global activate dart2js_info # only needed once
-$ dart2js_info deferred_check out.js.info.data manifest.yaml
+$ dart bin/tools.dart deferred_check out.js.info.data manifest.yaml
 ```
 
 The format of the YAML file is:
@@ -414,8 +402,7 @@
 follows:
 
 ```console
-pub global activate dart2js_info # only needed once
-dart2js_info deferred_size out.js.info.data
+$ dart bin/tools.dart deferred_size out.js.info.data
 ```
 
 The tool will output a table listing all of the deferred imports in the program
@@ -439,8 +426,7 @@
 follows:
 
 ```console
-$ pub global activate dart2js_info # only needed once
-$ dart2js_info deferred_layout out.js.info.data
+$ dart bin/tools.dart deferred_layout out.js.info.data
 ```
 
 The tool will output a table listing all of the deferred output units or chunks,
@@ -483,8 +469,7 @@
 
 When you run:
 ```console
-$ pub global activate dart2js_info # only needed once
-$ dart2js_info function_size out.js.info.data
+$ dart bin/tools.dart function_size out.js.info.data
 ```
 
 the tool produces a table output with lots of entries. Here is an example entry
@@ -524,7 +509,7 @@
   * Launch the coverage server tool to serve up the JS code of your app:
 
 ```console
-$ dart2js_info coverage_server main.dart.js
+$ dart bin/tools.dart coverage_server main.dart.js
 ```
 
   * (optional) If you have a complex application setup, you may need to serve an
@@ -541,7 +526,7 @@
     coverage json files:
 
 ```console
-$ dart2js_info coverage_analysis main.dart.info.data main.dart.coverage.json
+$ dart bin/tools.dart coverage_analysis main.dart.info.data main.dart.coverage.json
 ```
 
 ### Runtime Code Analysis
@@ -571,13 +556,13 @@
 Finally run this tool:
 
 ```console
-$ dart2js_info runtime_coverage main.dart.info.data main.runtime.data.txt
+$ dart bin/tools.dart runtime_coverage main.dart.info.data main.runtime.data.txt
 ```
 
 And with the following to view package-level information:
 
 ```console
-$ dart2js_info runtime_coverage --show-packages main.dart.info.data main.runtime.data.txt
+$ dart bin/tools.dart runtime_coverage --show-packages main.dart.info.data main.runtime.data.txt
 ```
 
 Here's an example output snippet:
@@ -619,7 +604,7 @@
 This package is developed in [github][repo].  Please file feature requests and
 bugs at the [issue tracker][tracker].
 
-[AllInfo]: https://pub.dev/documentation/dart2js_info/latest/dart2js_info.info/AllInfo-class.html
+[AllInfo]: https://github.com/dart-lang/sdk/blob/801bbb551bd4b8c2a875f8f2c6ddb337e102e0f7/pkg/dart2js_info/lib/info.dart#L77
 [code_deps]: https://github.com/dart-lang/sdk/tree/main/pkg/dart2js_info/bin/src/code_deps.dart
 [common]: https://github.com/dart-lang/sdk/tree/main/pkg/dart2js_info/bin/src/common_command.dart
 [convert]: https://github.com/dart-lang/sdk/tree/main/pkg/dart2js_info/bin/convert.dart
diff --git a/pkg/front_end/test/fasta/textual_outline_suite.dart b/pkg/front_end/test/fasta/textual_outline_suite.dart
index 7309219..c0249d6 100644
--- a/pkg/front_end/test/fasta/textual_outline_suite.dart
+++ b/pkg/front_end/test/fasta/textual_outline_suite.dart
@@ -89,7 +89,11 @@
       // TODO(jensj): NNBD should be configured correctly.
       String? result = textualOutline(
         bytes,
-        const ScannerConfiguration(enableExtensionMethods: true),
+        const ScannerConfiguration(
+          enableExtensionMethods: true,
+          enableNonNullable: true,
+          enableTripleShift: true,
+        ),
         throwOnUnexpected: true,
         performModelling: modelled,
         addMarkerForUnknownForTest: modelled,
diff --git a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.textual_outline_modelled.expect
deleted file mode 100644
index cb1859d..0000000
--- a/pkg/front_end/testcases/const_functions/const_functions_const_factory.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,12 +0,0 @@
-import "package:expect/expect.dart";
-
-class MessageType {
-  const MessageType._(this.name);
-  const factory MessageType.parse(String name) {}
-  final String name;
-  static const print = MessageType._('print');
-  static const skip = MessageType._('skip');
-}
-
-const printConst = MessageType.parse("print");
-void main() {}
diff --git a/pkg/front_end/testcases/dart2js/late_fields.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/dart2js/late_fields.dart.textual_outline_modelled.expect
index 79b904b..4c47c71 100644
--- a/pkg/front_end/testcases/dart2js/late_fields.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/dart2js/late_fields.dart.textual_outline_modelled.expect
@@ -1,21 +1,10 @@
 class C {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int a;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int b;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int c = -1;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int d = -1;
+  late final int b;
+  late final int d = -1;
+  late int a;
+  late int c = -1;
 }
+
 var c = C();
 void main() {}
 void testInitializedFinalInstanceField() {}
diff --git a/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline.expect b/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline.expect
index 37ed746..51c2243 100644
--- a/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline.expect
@@ -1,16 +1,15 @@
 import 'late_statics_lib.dart' as lib;
 export 'late_statics_lib.dart';
+
 void main() {}
+
 class Statics {
-  static late int ;
-  a;
-  static late ;
-  final int b;
-  static late int ;
-  c = -1;
-  static late ;
-  final int d = -1;
+  static late int a;
+  static late final int b;
+  static late int c = -1;
+  static late final int d = -1;
 }
+
 void testUninitializedNonFinalStaticField() {}
 void testUninitializedFinalStaticField() {}
 void testInitializedNonFinalStaticField() {}
diff --git a/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..2b9d16c
--- /dev/null
+++ b/pkg/front_end/testcases/dart2js/late_statics.dart.textual_outline_modelled.expect
@@ -0,0 +1,19 @@
+export 'late_statics_lib.dart';
+import 'late_statics_lib.dart' as lib;
+
+class Statics {
+  static late final int b;
+  static late final int d = -1;
+  static late int a;
+  static late int c = -1;
+}
+
+void main() {}
+void testInitializedFinalStaticField() {}
+void testInitializedFinalTopLevelField() {}
+void testInitializedNonFinalStaticField() {}
+void testInitializedNonFinalTopLevelField() {}
+void testUninitializedFinalStaticField() {}
+void testUninitializedFinalTopLevelField() {}
+void testUninitializedNonFinalStaticField() {}
+void testUninitializedNonFinalTopLevelField() {}
diff --git a/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.textual_outline_modelled.expect
deleted file mode 100644
index 8d51c64..0000000
--- a/pkg/front_end/testcases/extension_types/simple_getter_resolution.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,10 +0,0 @@
-class A {
-  int get foo => 42;
-}
-
-extension E on A {
-  double get bar => 3.14;
-}
-
-main() {}
-test(A a, E e) {}
diff --git a/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.textual_outline_modelled.expect
deleted file mode 100644
index 00002ee..0000000
--- a/pkg/front_end/testcases/extension_types/simple_method_resolution.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,10 +0,0 @@
-class A {
-  void foo() {}
-}
-
-extension E on A {
-  void bar() => foo();
-}
-
-main() {}
-test(A a, E e) {}
diff --git a/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.textual_outline_modelled.expect
deleted file mode 100644
index 3cbb6bf..0000000
--- a/pkg/front_end/testcases/extension_types/simple_operator_resolution.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,13 +0,0 @@
-class A {
-  dynamic operator *(dynamic other) => 42;
-  dynamic operator -() => 42;
-  dynamic operator [](int index) => 42;
-  void operator []=(int index, dynamic value) {}
-}
-
-extension E on A {
-  dynamic operator +(dynamic other) => 42;
-}
-
-main() {}
-test(A a, E e) {}
diff --git a/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.textual_outline_modelled.expect
deleted file mode 100644
index 74b9e08..0000000
--- a/pkg/front_end/testcases/extension_types/simple_setter_resolution.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,10 +0,0 @@
-class A {
-  void set foo(int value) {}
-}
-
-extension E on A {
-  void set bar(int value) {}
-}
-
-main() {}
-test(A a, E e) {}
diff --git a/pkg/front_end/testcases/extension_types/simple_show_hide_conflicts.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/simple_show_hide_conflicts.dart.textual_outline_modelled.expect
deleted file mode 100644
index 4d9e489..0000000
--- a/pkg/front_end/testcases/extension_types/simple_show_hide_conflicts.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,11 +0,0 @@
-extension E1 on int {}
-
-extension E2 on int {}
-
-extension E3 on int {}
-
-hide ceil() {}
-hide isEven() {}
-main() {}
-show num() {}
-show num;
diff --git a/pkg/front_end/testcases/general/DeltaBlue.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/DeltaBlue.dart.textual_outline_modelled.expect
index a9bbfdc..b0caae8 100644
--- a/pkg/front_end/testcases/general/DeltaBlue.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/DeltaBlue.dart.textual_outline_modelled.expect
@@ -14,6 +14,7 @@
   void recalculate() {}
   void removeFromGraph() {}
 }
+
 abstract class Constraint {
   Constraint? satisfy(mark) {}
   Variable output();
@@ -32,6 +33,7 @@
   void recalculate();
   void removeFromGraph();
 }
+
 abstract class UnaryConstraint extends Constraint {
   UnaryConstraint(this.myOutput, Strength strength) : super(strength) {}
   Variable output() => myOutput;
@@ -46,24 +48,30 @@
   void recalculate() {}
   void removeFromGraph() {}
 }
+
 class DeltaBlue {
   void run() {}
 }
+
 class EditConstraint extends UnaryConstraint {
   EditConstraint(Variable v, Strength str) : super(v, str);
   bool isInput() => true;
   void execute() {}
 }
+
 class EqualityConstraint extends BinaryConstraint {
-  EqualityConstraint(Variable v1, Variable v2, Strength strength) : super(v1, v2, strength);
+  EqualityConstraint(Variable v1, Variable v2, Strength strength)
+      : super(v1, v2, strength);
   void execute() {}
 }
+
 class Plan {
   List<Constraint> list = <Constraint>[];
   int size() => list.length;
   void addConstraint(Constraint c) {}
   void execute() {}
 }
+
 class Planner {
   List<Constraint> removePropagateFrom(Variable out) {}
   Plan extractPlanFromConstraints(List<Constraint> constraints) {}
@@ -75,8 +83,11 @@
   void incrementalAdd(Constraint c) {}
   void incrementalRemove(Constraint c) {}
 }
+
 class ScaleConstraint extends BinaryConstraint {
-  ScaleConstraint( Variable src, this.scale, this.offset, Variable dest, Strength strength) : super(src, dest, strength);
+  ScaleConstraint(
+      Variable src, this.scale, this.offset, Variable dest, Strength strength)
+      : super(src, dest, strength);
   final Variable offset;
   final Variable scale;
   void addToGraph() {}
@@ -85,12 +96,21 @@
   void recalculate() {}
   void removeFromGraph() {}
 }
+
 class StayConstraint extends UnaryConstraint {
   StayConstraint(Variable v, Strength str) : super(v, str);
   void execute() {}
 }
+
 class Strength {
-  Strength nextWeaker() => const <Strength>[ STRONG_PREFERRED, PREFERRED, STRONG_DEFAULT, NORMAL, WEAK_DEFAULT, WEAKEST ][value];
+  Strength nextWeaker() => const <Strength>[
+        STRONG_PREFERRED,
+        PREFERRED,
+        STRONG_DEFAULT,
+        NORMAL,
+        WEAK_DEFAULT,
+        WEAKEST
+      ][value];
   const Strength(this.value, this.name);
   final String name;
   final int value;
@@ -99,6 +119,7 @@
   static bool stronger(Strength s1, Strength s2) {}
   static bool weaker(Strength s1, Strength s2) {}
 }
+
 class Variable {
   Constraint? determinedBy;
   List<Constraint> constraints = <Constraint>[];
@@ -111,6 +132,7 @@
   void addConstraint(Constraint c) {}
   void removeConstraint(Constraint c) {}
 }
+
 const NORMAL = const Strength(4, "normal");
 const PREFERRED = const Strength(2, "preferred");
 const REQUIRED = const Strength(0, "required");
@@ -121,11 +143,8 @@
 const int BACKWARD = 0;
 const int FORWARD = 2;
 const int NONE = 1;
+late Planner planner;
 main() {}
 void chainTest(int n) {}
 void change(Variable v, int newValue) {}
 void projectionTest(int n) {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-Planner planner;
diff --git a/pkg/front_end/testcases/general/covariant_generic2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/covariant_generic2.dart.textual_outline_modelled.expect
index c27fead..43d1837 100644
--- a/pkg/front_end/testcases/general/covariant_generic2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/covariant_generic2.dart.textual_outline_modelled.expect
@@ -1,18 +1,13 @@
 class Foo<T> {
+  Foo(this.finalField, this.callbackField);
   final Callback<T> callbackField;
   final T finalField;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  T mutableField;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  Callback<T> mutableCallbackField;
-  Foo(this.finalField, this.callbackField);
+  late Callback<T> mutableCallbackField;
+  late T mutableField;
   set setter(T x) {}
   void method(T x) {}
   void withCallback(Callback<T> callback) {}
 }
+
 main() {}
 typedef void Callback<T>(T x);
diff --git a/pkg/front_end/testcases/general/extension_types_feature_not_enabled.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/extension_types_feature_not_enabled.dart.textual_outline_modelled.expect
deleted file mode 100644
index f4eb2498..0000000
--- a/pkg/front_end/testcases/general/extension_types_feature_not_enabled.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,5 +0,0 @@
-class A {}
-
-extension type on A {}
-
-main() {}
diff --git a/pkg/front_end/testcases/general/function_call1.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/function_call1.dart.textual_outline_modelled.expect
index 9249223..930a611 100644
--- a/pkg/front_end/testcases/general/function_call1.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/function_call1.dart.textual_outline_modelled.expect
@@ -1,19 +1,15 @@
 class _Closure1 {
   _Closure1 get call => this;
 }
+
 class _Closure2 {
   _Closure2(this.call);
   final _Closure2 call;
 }
-test(_Closure1 foo, _Closure2 bar) {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-_Closure1 closure1;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-_Closure2 closure2;
+
+late _Closure1 closure1;
+late _Closure2 closure2;
 main() {}
+test(_Closure1 foo, _Closure2 bar) {}
 var field1 = closure1();
 var field2 = closure2();
diff --git a/pkg/front_end/testcases/general/function_call2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/function_call2.dart.textual_outline_modelled.expect
index eab5305..4b4ed48 100644
--- a/pkg/front_end/testcases/general/function_call2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/function_call2.dart.textual_outline_modelled.expect
@@ -1,19 +1,15 @@
 class _Closure1 {
   void Function() get call => () {};
 }
+
 class _Closure2 {
   _Closure2(this.call);
   final void Function() call;
 }
-test(_Closure1 foo, _Closure2 bar) {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-_Closure1 closure1;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-_Closure2 closure2;
+
+late _Closure1 closure1;
+late _Closure2 closure2;
 main() {}
+test(_Closure1 foo, _Closure2 bar) {}
 var field1 = closure1();
 var field2 = closure2();
diff --git a/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect
index 5eeda1d..5727c9d 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect
@@ -1,19 +1,16 @@
 class A {}
+
 class B extends A {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-List<B> xs;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-List<List<B>> xss;
+
 class Class<T extends A> {
   void method1a(T t) {}
   void method1b(T t) {}
   void method2a(T t) {}
   void method2b(T t) {}
 }
+
+late List<B> xs;
+late List<List<B>> xss;
 void errors() {}
 void main() {}
 void throws(void Function() f) {}
diff --git a/pkg/front_end/testcases/general/issue41842.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue41842.dart.textual_outline_modelled.expect
deleted file mode 100644
index 9f90691..0000000
--- a/pkg/front_end/testcases/general/issue41842.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,18 +0,0 @@
-import './issue41842_lib.dart' as lib;
-
-class A<T> {
-  A();
-  factory A.foo2(int x) = B.foo<T>;
-  factory A.foo3(int x) = B<T>.foo;
-  factory A.foo4(int x) = lib.Foo<T>;
-  factory A.foo5(int x) = B.bar<T>;
-  factory A.foo6(int x) = B<T>.bar;
-  factory A.foo7(int x) = lib.Bar<T>;
-}
-
-class B<T> extends A<T> {
-  B.foo(int x) {}
-  factory B.bar(int x) => B.foo(x);
-}
-
-void main() {}
diff --git a/pkg/front_end/testcases/general/issue_46886.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue_46886.dart.textual_outline.expect
index ad7a346..ad2b313 100644
--- a/pkg/front_end/testcases/general/issue_46886.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue_46886.dart.textual_outline.expect
@@ -1,6 +1,6 @@
 // @dart = 2.13
 class Foo {
-  Foo operator >>> (_) => this;
+  Foo operator >>>(_) => this;
 }
 extension on Symbol {
   String operator >(_) => "Greater Than used";
diff --git a/pkg/front_end/testcases/general/issue_46886.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue_46886.dart.textual_outline_modelled.expect
deleted file mode 100644
index dab65d1..0000000
--- a/pkg/front_end/testcases/general/issue_46886.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,13 +0,0 @@
-// @dart = 2.13
-abstract class Bar implements List<List<List<String>>> {}
-
-class Foo {
-  Foo operator >>>(_) => this;
-}
-
-extension on Symbol {
-  String call(_) => "Called";
-  String operator >(_) => "Greater Than used";
-}
-
-main() {}
diff --git a/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect b/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect
index 555c12a..740e5982 100644
--- a/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect
@@ -6,8 +6,7 @@
 external foo(String x) {}
 class B {}
 class C {
-  late
-  B b;
+  late B b;
 }
 abstract class AbstractClass {
   const AbstractClass.id();
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect
index f367e69..94c1f73 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect
@@ -1,12 +1,14 @@
 class A {}
+
 class B extends A {}
+
 class C<T extends A> {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  T _field;
   foo(T x) {}
+  late T _field;
 }
+
 class D extends C<B> {}
+
 class Foo extends Object with C<B> {}
+
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect
index beb5eea..9465953 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect
@@ -2,10 +2,8 @@
   List<T> get list;
   void setList<T>(List<T> value);
 }
+
 class Bar implements Foo<int> {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  List<int> list;
+  late List<int> list;
   void setList<int>(List<int> value) {}
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect
index 2967ac1..e231547a 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect
@@ -15,13 +15,10 @@
   static void foo12Prime(void Function(List<U>) b) {}
   static void foo13(void Function(U b)) {}
   static void foo13Prime(void Function(List<U> b)) {}
-  static late U ;
-  foo14;
-  static late List<U> (){}
-  foo14Prime;
-  static late U ;
-  Function(U) foo15;
-  static late List<U> (){}
-  Function(List<U>) foo15Prime;
+  static late U foo14;
+  static late List<U> foo14Prime;
+  static late U Function(U) foo15;
+  static late List<U> Function(List<U>) foo15Prime;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect
index 531ae41..ebf7d08 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect
@@ -1,12 +1,12 @@
 class Foo<U> {
   static List<U> Function() foo8Prime() {}
-  static List<U> Function(List<U>) foo15Prime = null;
-  static List<U> foo14Prime = null;
   static List<U> foo1Prime() {}
   static U Function() foo8() {}
-  static U Function(U) foo15 = null;
   static U foo1() {}
-  static U foo14 = null;
+  static late List<U> Function(List<U>) foo15Prime;
+  static late List<U> foo14Prime;
+  static late U Function(U) foo15;
+  static late U foo14;
   static void Function(List<U>) foo9Prime() {}
   static void Function(U) foo9() {}
   static void foo10(U Function()) {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect
index 650cef8..5a78960 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect
@@ -15,13 +15,10 @@
   static void foo12Prime(void Function(List<U>) b) {}
   static void foo13(void Function(U b)) {}
   static void foo13Prime(void Function(List<U> b)) {}
-  static late U ;
-  foo14;
-  static late List<U> (){}
-  foo14Prime;
-  static late U ;
-  Function(U) foo15;
-  static late List<U> (){}
-  Function(List<U>) foo15Prime;
+  static late U foo14;
+  static late List<U> foo14Prime;
+  static late U Function(U) foo15;
+  static late List<U> Function(List<U>) foo15Prime;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect
index 72cd4cf..601c17f 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect
@@ -1,12 +1,12 @@
 extension Foo<U> on List {
   static List<U> Function() foo8Prime() {}
-  static List<U> Function(List<U>) foo15Prime = null;
-  static List<U> foo14Prime = null;
   static List<U> foo1Prime() {}
   static U Function() foo8() {}
-  static U Function(U) foo15 = null;
   static U foo1() {}
-  static U foo14 = null;
+  static late List<U> Function(List<U>) foo15Prime;
+  static late List<U> foo14Prime;
+  static late U Function(U) foo15;
+  static late U foo14;
   static void Function(List<U>) foo9Prime() {}
   static void Function(U) foo9() {}
   static void foo10(U Function()) {}
diff --git a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline_modelled.expect
deleted file mode 100644
index 86ca952..0000000
--- a/pkg/front_end/testcases/general/type_variable_in_static_context.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,17 +0,0 @@
-class Class<T> {
-  static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {}
-  static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {}
-  static A<T>? method3<S extends A<T>>(A<T> arg) {}
-  static B<T>? method5<S extends B<T>>(B<T> arg) {}
-  static Class<Class<T>>? method2<S extends Class<Class<T>>>(
-      Class<Class<T>> arg) {}
-  static Class<T>? method1<S extends Class<T>>(Class<T> arg) {}
-  static T? method0<S extends T>(T arg) {}
-  static void Function<S extends T>()?
-      method7<U extends void Function<S extends T>()>(
-          void Function<S extends T>() arg) {}
-}
-
-main() {}
-typedef A<T> = Class<T>;
-typedef B<T extends num> = Class<T>;
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect
index 7720cab..b00f48b 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect
@@ -1,6 +1,14 @@
+abstract class F<T> {
+  void foo7<Q extends T>(Q a, covariant num b, T c);
+  void foo8<Q extends T>(Q a, covariant num b, T c);
+}
+
 class A<T> {}
+
 class B extends A<String> {}
+
 class C<T1, T2, T3> extends B {}
+
 class D<P, Q> extends C<int, Q, P> {
   D(tt) : foo = tt;
   Map<P, Q> foo;
@@ -8,24 +16,21 @@
   foo2(y) {}
   foo3<T1, T2>(z) {}
 }
-foo1(x) {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-List<Iterable> globalVar;
-abstract class F<T> {
-  void foo7<Q extends T>(Q a, covariant num b, T c);
-  void foo8<Q extends T>(Q a, covariant num b, T c);
-}
+
 class E<P extends String> {
   factory E() => throw '';
   void foo6<T extends P, U extends List<T>>(Map<T, U> map) {}
 }
+
 class G<T> {
   void foo7<Q extends T>(Q a, int b, T c) {}
 }
+
 class H<T> extends G<T> implements F<T> {
   void foo8<Q extends T>(Q a, int b, T c) {}
 }
+
+foo1(x) {}
+late List<Iterable> globalVar;
 main() {}
 void foo5(x) {}
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect
index 042fbfc..abe4f27 100644
--- a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline.expect
@@ -1,25 +1,27 @@
 class A {
-  late
-  num invariantField;
-  covariant late num ;
-  covariantField;
+  late num invariantField;
+  covariant late num covariantField;
 }
+
 abstract class B implements A {
   get invariantField;
   set invariantField(value);
   get covariantField;
   set covariantField(value);
 }
+
 abstract class C implements A {
   int get invariantField;
   void set invariantField(int value) {}
   int get covariantField;
   void set covariantField(int value) {}
 }
+
 abstract class D implements A {
   int get invariantField;
   void set invariantField(covariant int value) {}
   int get covariantField;
   void set covariantField(covariant int value) {}
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..bc5284c
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/covariant_late_field.dart.textual_outline_modelled.expect
@@ -0,0 +1,27 @@
+abstract class B implements A {
+  get covariantField;
+  get invariantField;
+  set covariantField(value);
+  set invariantField(value);
+}
+
+abstract class C implements A {
+  int get covariantField;
+  int get invariantField;
+  void set covariantField(int value) {}
+  void set invariantField(int value) {}
+}
+
+abstract class D implements A {
+  int get covariantField;
+  int get invariantField;
+  void set covariantField(covariant int value) {}
+  void set invariantField(covariant int value) {}
+}
+
+class A {
+  covariant late num covariantField;
+  late num invariantField;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline.expect
index 2470729..80e8244 100644
--- a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline.expect
@@ -1,38 +1,34 @@
 abstract class A {
-  late
-  int property4;
-  late
-  int? property5;
-  covariant late int ;
-  property6;
+  late int property4;
+  late int? property5;
+  covariant late int property6;
   A(this.property4, this.property5, this.property6);
 }
+
 abstract class B1 {
-  late
-  final int property4;
-  late
-  final int property5;
-  late
-  final int? property6;
+  late final int property4;
+  late final int property5;
+  late final int? property6;
   B1(this.property4, this.property5, this.property6);
 }
+
 abstract class B2 implements B1 {
   void set property4(int i);
   void set property5(int? i);
   void set property6(int i);
 }
+
 abstract class C1 {
-  late
-  int property4;
-  late
-  int property5;
-  late
-  int property6;
+  late int property4;
+  late int property5;
+  late int property6;
   C1(this.property4, this.property5, this.property6);
 }
+
 abstract class C2 implements C1 {
   int get property4;
   int get property5;
   int? get property6;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..c07c6aa
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart.textual_outline_modelled.expect
@@ -0,0 +1,34 @@
+abstract class A {
+  A(this.property4, this.property5, this.property6);
+  covariant late int property6;
+  late int? property5;
+  late int property4;
+}
+
+abstract class B1 {
+  B1(this.property4, this.property5, this.property6);
+  late final int? property6;
+  late final int property4;
+  late final int property5;
+}
+
+abstract class B2 implements B1 {
+  void set property4(int i);
+  void set property5(int? i);
+  void set property6(int i);
+}
+
+abstract class C1 {
+  C1(this.property4, this.property5, this.property6);
+  late int property4;
+  late int property5;
+  late int property6;
+}
+
+abstract class C2 implements C1 {
+  int? get property6;
+  int get property4;
+  int get property5;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline.expect
index 79846e2..15c8e0c 100644
--- a/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline.expect
@@ -1,8 +1,9 @@
 class A {
   int? field;
 }
+
 class B implements A {
-  late ;
-  var field;
+  late var field;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..15c8e0c
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/infer_late_field_type.dart.textual_outline_modelled.expect
@@ -0,0 +1,9 @@
+class A {
+  int? field;
+}
+
+class B implements A {
+  late var field;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline.expect
index 6df6180..0e93330 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline.expect
@@ -1,22 +1,24 @@
 int nonNullableTopLevelFieldReads = 0;
-late
-final int nonNullableTopLevelField = nonNullableTopLevelFieldReads++ == 0 ? nonNullableTopLevelField + 1 : 0;
+late final int nonNullableTopLevelField =
+    nonNullableTopLevelFieldReads++ == 0 ? nonNullableTopLevelField + 1 : 0;
 int nullableTopLevelFieldReads = 0;
-late
-final int? nullableTopLevelField = nullableTopLevelFieldReads++ == 0 ? nullableTopLevelField.hashCode : 0;
+late final int? nullableTopLevelField =
+    nullableTopLevelFieldReads++ == 0 ? nullableTopLevelField.hashCode : 0;
+
 class Class {
   static int nonNullableStaticFieldReads = 0;
-  static late ;
-  final int nonNullableStaticField = nonNullableStaticFieldReads++ == 0 ? nonNullableStaticField + 1 : 0;
+  static late final int nonNullableStaticField =
+      nonNullableStaticFieldReads++ == 0 ? nonNullableStaticField + 1 : 0;
   static int nullableStaticFieldReads = 0;
-  static late ;
-  final int? nullableStaticField = nullableStaticFieldReads++ == 0 ? nullableStaticField.hashCode : 0;
+  static late final int? nullableStaticField =
+      nullableStaticFieldReads++ == 0 ? nullableStaticField.hashCode : 0;
   int nonNullableInstanceFieldReads = 0;
-  late
-  final int nonNullableInstanceField = nonNullableInstanceFieldReads++ == 0 ? nonNullableInstanceField + 1 : 0;
+  late final int nonNullableInstanceField =
+      nonNullableInstanceFieldReads++ == 0 ? nonNullableInstanceField + 1 : 0;
   int nullableInstanceFieldReads = 0;
-  late
-  final int? nullableInstanceField = nullableInstanceFieldReads++ == 0 ? nullableInstanceField.hashCode : 0;
+  late final int? nullableInstanceField =
+      nullableInstanceFieldReads++ == 0 ? nullableInstanceField.hashCode : 0;
 }
+
 void main() {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..d0e2ca7
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.textual_outline_modelled.expect
@@ -0,0 +1,23 @@
+class Class {
+  int nonNullableInstanceFieldReads = 0;
+  int nullableInstanceFieldReads = 0;
+  late final int? nullableInstanceField =
+      nullableInstanceFieldReads++ == 0 ? nullableInstanceField.hashCode : 0;
+  late final int nonNullableInstanceField =
+      nonNullableInstanceFieldReads++ == 0 ? nonNullableInstanceField + 1 : 0;
+  static int nonNullableStaticFieldReads = 0;
+  static int nullableStaticFieldReads = 0;
+  static late final int? nullableStaticField =
+      nullableStaticFieldReads++ == 0 ? nullableStaticField.hashCode : 0;
+  static late final int nonNullableStaticField =
+      nonNullableStaticFieldReads++ == 0 ? nonNullableStaticField + 1 : 0;
+}
+
+int nonNullableTopLevelFieldReads = 0;
+int nullableTopLevelFieldReads = 0;
+late final int? nullableTopLevelField =
+    nullableTopLevelFieldReads++ == 0 ? nullableTopLevelField.hashCode : 0;
+late final int nonNullableTopLevelField =
+    nonNullableTopLevelFieldReads++ == 0 ? nonNullableTopLevelField + 1 : 0;
+throws(f(), String message) {}
+void main() {}
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline.expect
index 6a82617..30d8446 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline.expect
@@ -1,23 +1,33 @@
 import 'initializer_rewrite_from_opt_out_lib.dart';
+
 int nonNullableTopLevelFieldReads = 0;
-late
-final int nonNullableTopLevelField = nonNullableTopLevelFieldReads++ == 0 ? nonNullableTopLevelField : computeInitialValue();
+late final int nonNullableTopLevelField = nonNullableTopLevelFieldReads++ == 0
+    ? nonNullableTopLevelField
+    : computeInitialValue();
 int nullableTopLevelFieldReads = 0;
-late
-final int? nullableTopLevelField = nullableTopLevelFieldReads++ == 0 ? nullableTopLevelField : computeInitialValue();
+late final int? nullableTopLevelField = nullableTopLevelFieldReads++ == 0
+    ? nullableTopLevelField
+    : computeInitialValue();
+
 class Class {
   static int nonNullableStaticFieldReads = 0;
-  static late ;
-  final int nonNullableStaticField = nonNullableStaticFieldReads++ == 0 ? nonNullableStaticField : computeInitialValue();
+  static late final int nonNullableStaticField =
+      nonNullableStaticFieldReads++ == 0
+          ? nonNullableStaticField
+          : computeInitialValue();
   static int nullableStaticFieldReads = 0;
-  static late ;
-  final int? nullableStaticField = nullableStaticFieldReads++ == 0 ? nullableStaticField : computeInitialValue();
+  static late final int? nullableStaticField = nullableStaticFieldReads++ == 0
+      ? nullableStaticField
+      : computeInitialValue();
   int nonNullableInstanceFieldReads = 0;
-  late
-  final int nonNullableInstanceField = nonNullableInstanceFieldReads++ == 0 ? nonNullableInstanceField : computeInitialValue();
+  late final int nonNullableInstanceField = nonNullableInstanceFieldReads++ == 0
+      ? nonNullableInstanceField
+      : computeInitialValue();
   int nullableInstanceFieldReads = 0;
-  late
-  final int? nullableInstanceField = nullableInstanceFieldReads++ == 0 ? nullableInstanceField : computeInitialValue();
+  late final int? nullableInstanceField = nullableInstanceFieldReads++ == 0
+      ? nullableInstanceField
+      : computeInitialValue();
 }
+
 void main() {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..711cbdf
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite_from_opt_out.dart.textual_outline_modelled.expect
@@ -0,0 +1,32 @@
+import 'initializer_rewrite_from_opt_out_lib.dart';
+
+class Class {
+  int nonNullableInstanceFieldReads = 0;
+  int nullableInstanceFieldReads = 0;
+  late final int? nullableInstanceField = nullableInstanceFieldReads++ == 0
+      ? nullableInstanceField
+      : computeInitialValue();
+  late final int nonNullableInstanceField = nonNullableInstanceFieldReads++ == 0
+      ? nonNullableInstanceField
+      : computeInitialValue();
+  static int nonNullableStaticFieldReads = 0;
+  static int nullableStaticFieldReads = 0;
+  static late final int? nullableStaticField = nullableStaticFieldReads++ == 0
+      ? nullableStaticField
+      : computeInitialValue();
+  static late final int nonNullableStaticField =
+      nonNullableStaticFieldReads++ == 0
+          ? nonNullableStaticField
+          : computeInitialValue();
+}
+
+int nonNullableTopLevelFieldReads = 0;
+int nullableTopLevelFieldReads = 0;
+late final int? nullableTopLevelField = nullableTopLevelFieldReads++ == 0
+    ? nullableTopLevelField
+    : computeInitialValue();
+late final int nonNullableTopLevelField = nonNullableTopLevelFieldReads++ == 0
+    ? nonNullableTopLevelField
+    : computeInitialValue();
+throws(f(), String message) {}
+void main() {}
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.textual_outline_modelled.expect
index dc89fb9..ed79e71 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_with_initializer.dart.textual_outline_modelled.expect
@@ -1,19 +1,18 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   Class.constructor1();
   Class.constructor2(this.field);
   Class.constructor3(int value) : this.field = value + 1;
   Class.constructor4([this.field = 42]);
-  int field = 10;
+  late int field = 10;
 }
+
 class Subclass extends Class {
   Subclass.constructor1() : super.constructor1();
   Subclass.constructor2(int value) : super.constructor2(value);
   Subclass.constructor3(int value) : super.constructor3(value);
   Subclass.constructor4([int value = 87]) : super.constructor4(value);
 }
+
 expect(expected, actual) {}
 main() {}
 test1() {}
diff --git a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.textual_outline_modelled.expect
index 342930e..83f9d66 100644
--- a/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_field_without_initializer.dart.textual_outline_modelled.expect
@@ -1,19 +1,18 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   Class.constructor1();
   Class.constructor2(this.field);
   Class.constructor3(int value) : this.field = value + 1;
   Class.constructor4([this.field = 42]);
-  int field;
+  late int field;
 }
+
 class Subclass extends Class {
   Subclass.constructor1() : super.constructor1();
   Subclass.constructor2(int value) : super.constructor2(value);
   Subclass.constructor3(int value) : super.constructor3(value);
   Subclass.constructor4([int value = 87]) : super.constructor4(value);
 }
+
 expect(expected, actual) {}
 main() {}
 test1() {}
diff --git a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.textual_outline_modelled.expect
index 21f03d0..6260a6a 100644
--- a/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_final_field_without_initializer.dart.textual_outline_modelled.expect
@@ -1,19 +1,18 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   Class.constructor1();
   Class.constructor2(this.field);
   Class.constructor3(int value) : this.field = value + 1;
   Class.constructor4([this.field = 42]);
-  final int field;
+  late final int field;
 }
+
 class Subclass extends Class {
   Subclass.constructor1() : super.constructor1();
   Subclass.constructor2(int value) : super.constructor2(value);
   Subclass.constructor3(int value) : super.constructor3(value);
   Subclass.constructor4([int value = 87]) : super.constructor4(value);
 }
+
 expect(expected, actual) {}
 main() {}
 test1() {}
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.textual_outline_modelled.expect
index f6e9106..a8b3488 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_with_initializer.dart.textual_outline_modelled.expect
@@ -1,19 +1,18 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   Class.constructor1();
   Class.constructor2(this.field);
   Class.constructor3(int value) : this.field = value + 1;
   Class.constructor4([this.field = 42]);
-  int? field = initField();
+  late int? field = initField();
 }
+
 class Subclass extends Class {
   Subclass.constructor1() : super.constructor1();
   Subclass.constructor2(int value) : super.constructor2(value);
   Subclass.constructor3(int value) : super.constructor3(value);
   Subclass.constructor4([int value = 87]) : super.constructor4(value);
 }
+
 expect(expected, actual) {}
 int? initField() => 10;
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.textual_outline_modelled.expect
index 5750785..40645ff 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_field_without_initializer.dart.textual_outline_modelled.expect
@@ -1,19 +1,18 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   Class.constructor1();
   Class.constructor2(this.field);
   Class.constructor3(int value) : this.field = value + 1;
   Class.constructor4([this.field = 42]);
-  int? field;
+  late int? field;
 }
+
 class Subclass extends Class {
   Subclass.constructor1() : super.constructor1();
   Subclass.constructor2(int value) : super.constructor2(value);
   Subclass.constructor3(int value) : super.constructor3(value);
   Subclass.constructor4([int value = 87]) : super.constructor4(value);
 }
+
 expect(expected, actual) {}
 main() {}
 test1() {}
diff --git a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.textual_outline_modelled.expect
index 196bf87..7546910 100644
--- a/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/instance_nullable_final_field_without_initializer.dart.textual_outline_modelled.expect
@@ -1,19 +1,18 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   Class.constructor1();
   Class.constructor2(this.field);
   Class.constructor3(int value) : this.field = value + 1;
   Class.constructor4([this.field = 42]);
-  final int? field;
+  late final int? field;
 }
+
 class Subclass extends Class {
   Subclass.constructor1() : super.constructor1();
   Subclass.constructor2(int value) : super.constructor2(value);
   Subclass.constructor3(int value) : super.constructor3(value);
   Subclass.constructor4([int value = 87]) : super.constructor4(value);
 }
+
 expect(expected, actual) {}
 main() {}
 test1() {}
diff --git a/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline.expect
index f1b177b..886ac55 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline.expect
@@ -1,9 +1,8 @@
 class C {
   num pi = 3.14;
-  late
-  num p1 = this.pi;
-  late ;
-  final p2 = this.pi;
+  late num p1 = this.pi;
+  late final p2 = this.pi;
 }
+
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3b80a04
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/issue40373.dart.textual_outline_modelled.expect
@@ -0,0 +1,8 @@
+class C {
+  late final p2 = this.pi;
+  late num p1 = this.pi;
+  num pi = 3.14;
+}
+
+expect(expected, actual) {}
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline.expect
index 7106834..777701a 100644
--- a/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline.expect
@@ -1,10 +1,9 @@
-late ;
-final g;
+late final g;
+
 class C {
-  static late ;
-  final s;
-  late ;
-  final v;
+  static late final s;
+  late final v;
 }
+
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..50eca5b
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/issue40373b.dart.textual_outline_modelled.expect
@@ -0,0 +1,8 @@
+class C {
+  late final v;
+  static late final s;
+}
+
+expect(expected, actual) {}
+late final g;
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline.expect
index f2867b2..ec1d8d5 100644
--- a/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline.expect
@@ -1,8 +1,9 @@
 main() {}
+
 class C {
-  covariant late ;
-  final int x;
+  covariant late final int x;
 }
+
 class D extends C {
   set x(num value) {}
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f06b890
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/issue40805.dart.textual_outline_modelled.expect
@@ -0,0 +1,9 @@
+class C {
+  covariant late final int x;
+}
+
+class D extends C {
+  set x(num value) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/issue41436b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/issue41436b.dart.textual_outline_modelled.expect
index 8364103..b38c3b2 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436b.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436b.dart.textual_outline_modelled.expect
@@ -1,10 +1,9 @@
 abstract class A {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int x;
+  late int x;
 }
+
 class _B implements A {
   int x = 3;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline.expect
index 65ad27a..aa8ff97 100644
--- a/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline.expect
@@ -1,10 +1,10 @@
 bool _called = false;
 String init(String val) {}
+
 class C {
-  static late String;
-  operator? (){}
-  s = init("lateValue");
+  static late String? s = init("lateValue");
 }
+
 main() {}
 expect(expected, actual) {}
 throws(void Function() f) {}
diff --git a/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..94694b5
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/issue41922.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+String init(String val) {}
+bool _called = false;
+
+class C {
+  static late String? s = init("lateValue");
+}
+
+expect(expected, actual) {}
+main() {}
+throws(void Function() f) {}
diff --git a/pkg/front_end/testcases/late_lowering/issue42407.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/issue42407.dart.textual_outline_modelled.expect
index fe9c799..7861b1b 100644
--- a/pkg/front_end/testcases/late_lowering/issue42407.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/issue42407.dart.textual_outline_modelled.expect
@@ -1,14 +1,13 @@
 class A<T> {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  T x;
+  late T x;
 }
+
 class B<T> {
   T? _y;
   T? get y => _y;
   set y(T? val) {}
 }
+
 expect(expected, actual) {}
 main() {}
 throws(void Function() f) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline.expect
index e124df6..5a8484a 100644
--- a/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline.expect
@@ -1,70 +1,55 @@
 class Annotation {
   const Annotation();
 }
+
 @Annotation()
-late
-int topLevelField;
+late int topLevelField;
 @Annotation()
-late
-final int finalTopLevelField;
+late final int finalTopLevelField;
 @Annotation()
-late
-final int finalTopLevelFieldWithInitializer = 0;
+late final int finalTopLevelFieldWithInitializer = 0;
+
 class A {
   @Annotation()
-  late
-  int instanceField;
+  late int instanceField;
   @Annotation()
-  late
-  final int finalInstanceField;
+  late final int finalInstanceField;
   @Annotation()
-  late
-  final int finalInstanceFieldWithInitializer = 0;
+  late final int finalInstanceFieldWithInitializer = 0;
   @Annotation()
-  covariant late num ;
-  covariantInstanceField;
+  covariant late num covariantInstanceField;
   @Annotation()
-  static late int ;
-  staticField;
+  static late int staticField;
   @Annotation()
-  static late ;
-  final int finalStaticField;
+  static late final int finalStaticField;
   @Annotation()
-  static late ;
-  final int finalStaticFieldWithInitializer = 0;
+  static late final int finalStaticFieldWithInitializer = 0;
 }
+
 mixin B {
   @Annotation()
-  late
-  int instanceField;
+  late int instanceField;
   @Annotation()
-  late
-  final int finalInstanceField;
+  late final int finalInstanceField;
   @Annotation()
-  late
-  final int finalInstanceFieldWithInitializer = 0;
+  late final int finalInstanceFieldWithInitializer = 0;
   @Annotation()
-  covariant late num ;
-  covariantInstanceField;
+  covariant late num covariantInstanceField;
   @Annotation()
-  static late int ;
-  staticField;
+  static late int staticField;
   @Annotation()
-  static late ;
-  final int finalStaticField;
+  static late final int finalStaticField;
   @Annotation()
-  static late ;
-  final int finalStaticFieldWithInitializer = 0;
+  static late final int finalStaticFieldWithInitializer = 0;
 }
+
 extension Extension on A {
   @Annotation()
-  static late int ;
-  extensionStaticField;
+  static late int extensionStaticField;
   @Annotation()
-  static late ;
-  final int finalExtensionStaticField;
+  static late final int finalExtensionStaticField;
   @Annotation()
-  static late ;
-  final int finalExtensionStaticFieldWithInitializer = 0;
+  static late final int finalExtensionStaticFieldWithInitializer = 0;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..37d1b59
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_annotations.dart.textual_outline_modelled.expect
@@ -0,0 +1,53 @@
+class A {
+  @Annotation()
+  covariant late num covariantInstanceField;
+  @Annotation()
+  late final int finalInstanceField;
+  @Annotation()
+  late final int finalInstanceFieldWithInitializer = 0;
+  @Annotation()
+  late int instanceField;
+  @Annotation()
+  static late final int finalStaticField;
+  @Annotation()
+  static late final int finalStaticFieldWithInitializer = 0;
+  @Annotation()
+  static late int staticField;
+}
+
+class Annotation {
+  const Annotation();
+}
+
+extension Extension on A {
+  @Annotation()
+  static late final int finalExtensionStaticField;
+  @Annotation()
+  static late final int finalExtensionStaticFieldWithInitializer = 0;
+  @Annotation()
+  static late int extensionStaticField;
+}
+
+@Annotation()
+late final int finalTopLevelField;
+@Annotation()
+late final int finalTopLevelFieldWithInitializer = 0;
+@Annotation()
+late int topLevelField;
+main() {}
+mixin B {
+  @Annotation()
+  covariant late num covariantInstanceField;
+  @Annotation()
+  late final int finalInstanceField;
+  @Annotation()
+  late final int finalInstanceFieldWithInitializer = 0;
+  @Annotation()
+  late int instanceField;
+  @Annotation()
+  static late final int finalStaticField;
+  @Annotation()
+  static late final int finalStaticFieldWithInitializer = 0;
+  @Annotation()
+  static late int staticField;
+}
diff --git a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline.expect
index 51dbe44..37b9f3a 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline.expect
@@ -1,22 +1,19 @@
 int? method() => null;
-late ;
-var nonNullableTopLevelField = 0;
-late ;
-var nullableTopLevelField = method();
+late var nonNullableTopLevelField = 0;
+late var nullableTopLevelField = method();
+
 class A {
-  late ;
-  var nonNullableInstanceField = 0;
-  late ;
-  var nullableInstanceField = method();
-  static late ;
-  var nonNullableStaticField = 0;
-  static late ;
-  var nullableStaticField = method();
+  late var nonNullableInstanceField = 0;
+  late var nullableInstanceField = method();
+  static late var nonNullableStaticField = 0;
+  static late var nullableStaticField = method();
 }
+
 class B extends A {
   get nonNullableInstanceField => 0;
   set nonNullableInstanceField(value) {}
   get nullableInstanceField => 0;
   set nullableInstanceField(value) {}
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..5ba8470
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_field_inference.dart.textual_outline_modelled.expect
@@ -0,0 +1,18 @@
+class A {
+  late var nonNullableInstanceField = 0;
+  late var nullableInstanceField = method();
+  static late var nonNullableStaticField = 0;
+  static late var nullableStaticField = method();
+}
+
+class B extends A {
+  get nonNullableInstanceField => 0;
+  get nullableInstanceField => 0;
+  set nonNullableInstanceField(value) {}
+  set nullableInstanceField(value) {}
+}
+
+int? method() => null;
+late var nonNullableTopLevelField = 0;
+late var nullableTopLevelField = method();
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline.expect
index 40fa799..5d7693b 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline.expect
@@ -1,27 +1,22 @@
-late
-int lateTopLevelField1 = 123;
+late int lateTopLevelField1 = 123;
+
 class Class<T> {
-  static late int ;
-  lateStaticField1 = 87;
-  static late int ;
-  lateStaticField2 = 42;
+  static late int lateStaticField1 = 87;
+  static late int lateStaticField2 = 42;
   static staticMethod() {}
-  late
-  int lateInstanceField = 16;
+  late int lateInstanceField = 16;
   final T field;
-  late
-  T lateGenericField1 = field;
-  late
-  T lateGenericField2 = field;
+  late T lateGenericField1 = field;
+  late T lateGenericField2 = field;
   Class(this.field);
   instanceMethod(T value) {}
 }
+
 extension Extension<T> on Class<T> {
-  static late int ;
-  lateExtensionField1 = 87;
-  static late int ;
-  lateExtensionField2 = 42;
+  static late int lateExtensionField1 = 87;
+  static late int lateExtensionField2 = 42;
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0dae584
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_field_with_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,22 @@
+class Class<T> {
+  Class(this.field);
+  final T field;
+  instanceMethod(T value) {}
+  late T lateGenericField1 = field;
+  late T lateGenericField2 = field;
+  late int lateInstanceField = 16;
+  static late int lateStaticField1 = 87;
+  static late int lateStaticField2 = 42;
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static late int lateExtensionField1 = 87;
+  static late int lateExtensionField2 = 42;
+  static staticMethod() {}
+}
+
+late int lateTopLevelField1 = 123;
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline.expect
index 45d52d8..72dff0f 100644
--- a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline.expect
@@ -1,24 +1,20 @@
-late
-int lateTopLevelField;
+late int lateTopLevelField;
+
 class Class<T> {
-  static late int ;
-  lateStaticField1;
-  static late int ;
-  lateStaticField2;
+  static late int lateStaticField1;
+  static late int lateStaticField2;
   static staticMethod() {}
-  late
-  int lateInstanceField;
-  late
-  T lateGenericInstanceField;
+  late int lateInstanceField;
+  late T lateGenericInstanceField;
   instanceMethod(T value) {}
 }
+
 extension Extension<T> on Class<T> {
-  static late int ;
-  lateExtensionField1;
-  static late int ;
-  lateExtensionField2;
+  static late int lateExtensionField1;
+  static late int lateExtensionField2;
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3672948
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_field_without_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,20 @@
+class Class<T> {
+  instanceMethod(T value) {}
+  late T lateGenericInstanceField;
+  late int lateInstanceField;
+  static late int lateStaticField1;
+  static late int lateStaticField2;
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static late int lateExtensionField1;
+  static late int lateExtensionField2;
+  static staticMethod() {}
+}
+
+late int lateTopLevelField;
+main() {}
+throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline.expect
index 08e1682..b2771e4 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline.expect
@@ -2,48 +2,45 @@
   final int x;
   B(this.x);
 }
+
 class C extends B {
-  late ;
-  final y = x + 1;
+  late final y = x + 1;
   C(int x) : super(x);
   method() => x;
 }
+
 int? lateTopLevelField1Init;
 int initLateTopLevelField1(int value) {}
-late
-final int lateTopLevelField1 = initLateTopLevelField1(123);
+late final int lateTopLevelField1 = initLateTopLevelField1(123);
+
 class Class<T> {
   static int? lateStaticField1Init;
   static int initLateStaticField1(int value) {}
-  static late ;
-  final int lateStaticField1 = initLateStaticField1(87);
+  static late final int lateStaticField1 = initLateStaticField1(87);
   static int? lateStaticField2Init;
   static int initLateStaticField2(int value) {}
-  static late ;
-  final int lateStaticField2 = initLateStaticField2(42);
+  static late final int lateStaticField2 = initLateStaticField2(42);
   static staticMethod() {}
   int? lateInstanceFieldInit;
   int initLateInstanceField(int value) {}
-  late
-  final int lateInstanceField = initLateInstanceField(16);
+  late final int lateInstanceField = initLateInstanceField(16);
   T? lateGenericFieldInit;
   T initLateGenericField(T value) {}
   final T field;
-  late
-  final T lateGenericField = initLateGenericField(field);
+  late final T lateGenericField = initLateGenericField(field);
   Class(this.field);
   instanceMethod() {}
 }
+
 extension Extension<T> on Class<T> {
   static int? lateExtensionField1Init;
   static int initLateExtensionField1(int value) {}
-  static late ;
-  final int lateExtensionField1 = initLateExtensionField1(87);
+  static late final int lateExtensionField1 = initLateExtensionField1(87);
   static int? lateExtensionField2Init;
   static int initLateExtensionField2(int value) {}
-  static late ;
-  final int lateExtensionField2 = initLateExtensionField2(42);
+  static late final int lateExtensionField2 = initLateExtensionField2(42);
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0c12053
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_with_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,46 @@
+class B {
+  B(this.x);
+  final int x;
+}
+
+class C extends B {
+  C(int x) : super(x);
+  late final y = x + 1;
+  method() => x;
+}
+
+class Class<T> {
+  Class(this.field);
+  T? lateGenericFieldInit;
+  T initLateGenericField(T value) {}
+  final T field;
+  instanceMethod() {}
+  int? lateInstanceFieldInit;
+  int initLateInstanceField(int value) {}
+  late final T lateGenericField = initLateGenericField(field);
+  late final int lateInstanceField = initLateInstanceField(16);
+  static int? lateStaticField1Init;
+  static int? lateStaticField2Init;
+  static int initLateStaticField1(int value) {}
+  static int initLateStaticField2(int value) {}
+  static late final int lateStaticField1 = initLateStaticField1(87);
+  static late final int lateStaticField2 = initLateStaticField2(42);
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static int? lateExtensionField1Init;
+  static int? lateExtensionField2Init;
+  static int initLateExtensionField1(int value) {}
+  static int initLateExtensionField2(int value) {}
+  static late final int lateExtensionField1 = initLateExtensionField1(87);
+  static late final int lateExtensionField2 = initLateExtensionField2(42);
+  static staticMethod() {}
+}
+
+int? lateTopLevelField1Init;
+int initLateTopLevelField1(int value) {}
+late final int lateTopLevelField1 = initLateTopLevelField1(123);
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline.expect
index 7a7f054..4b9f7ea 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline.expect
@@ -1,22 +1,19 @@
-late
-final int lateTopLevelField;
+late final int lateTopLevelField;
+
 class Class {
-  static late ;
-  final int lateStaticField1;
-  static late ;
-  final int lateStaticField2;
+  static late final int lateStaticField1;
+  static late final int lateStaticField2;
   static staticMethod() {}
-  late
-  final int lateInstanceField;
+  late final int lateInstanceField;
   instanceMethod() {}
 }
+
 extension Extension on Class {
-  static late ;
-  final int lateExtensionField1;
-  static late ;
-  final int lateExtensionField2;
+  static late final int lateExtensionField1;
+  static late final int lateExtensionField2;
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..d640950
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,19 @@
+class Class {
+  instanceMethod() {}
+  late final int lateInstanceField;
+  static late final int lateStaticField1;
+  static late final int lateStaticField2;
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension on Class {
+  static late final int lateExtensionField1;
+  static late final int lateExtensionField2;
+  static staticMethod() {}
+}
+
+late final int lateTopLevelField;
+main() {}
+throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline.expect
index 14bd840..521821c 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline.expect
@@ -1,39 +1,35 @@
 int? lateTopLevelField1Init;
 int? initLateTopLevelField1(int value) {}
-late
-final int? lateTopLevelField1 = initLateTopLevelField1(123);
+late final int? lateTopLevelField1 = initLateTopLevelField1(123);
+
 class Class<T> {
   static int? lateStaticField1Init;
   static int? initLateStaticField1(int value) {}
-  static late ;
-  final int? lateStaticField1 = initLateStaticField1(87);
+  static late final int? lateStaticField1 = initLateStaticField1(87);
   static int? lateStaticField2Init;
   static int? initLateStaticField2(int value) {}
-  static late ;
-  final int? lateStaticField2 = initLateStaticField2(42);
+  static late final int? lateStaticField2 = initLateStaticField2(42);
   static staticMethod() {}
   int? lateInstanceFieldInit;
   int? initLateInstanceField(int value) {}
-  late
-  final int? lateInstanceField = initLateInstanceField(16);
+  late final int? lateInstanceField = initLateInstanceField(16);
   T? lateGenericInstanceFieldInit;
   T? initLateGenericInstanceField(T? value) {}
   final T? field;
-  late
-  final T? lateGenericInstanceField = initLateGenericInstanceField(field);
+  late final T? lateGenericInstanceField = initLateGenericInstanceField(field);
   Class(this.field);
   instanceMethod() {}
 }
+
 extension Extension<T> on Class<T> {
   static int? lateExtensionField1Init;
   static int? initLateExtensionField1(int value) {}
-  static late ;
-  final int? lateExtensionField1 = initLateExtensionField1(87);
+  static late final int? lateExtensionField1 = initLateExtensionField1(87);
   static int? lateExtensionField2Init;
   static int? initLateExtensionField2(int value) {}
-  static late ;
-  final int? lateExtensionField2 = initLateExtensionField2(42);
+  static late final int? lateExtensionField2 = initLateExtensionField2(42);
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a5b6772
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_with_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,35 @@
+class Class<T> {
+  Class(this.field);
+  T? initLateGenericInstanceField(T? value) {}
+  T? lateGenericInstanceFieldInit;
+  final T? field;
+  instanceMethod() {}
+  int? initLateInstanceField(int value) {}
+  int? lateInstanceFieldInit;
+  late final T? lateGenericInstanceField = initLateGenericInstanceField(field);
+  late final int? lateInstanceField = initLateInstanceField(16);
+  static int? initLateStaticField1(int value) {}
+  static int? initLateStaticField2(int value) {}
+  static int? lateStaticField1Init;
+  static int? lateStaticField2Init;
+  static late final int? lateStaticField1 = initLateStaticField1(87);
+  static late final int? lateStaticField2 = initLateStaticField2(42);
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static int? initLateExtensionField1(int value) {}
+  static int? initLateExtensionField2(int value) {}
+  static int? lateExtensionField1Init;
+  static int? lateExtensionField2Init;
+  static late final int? lateExtensionField1 = initLateExtensionField1(87);
+  static late final int? lateExtensionField2 = initLateExtensionField2(42);
+  static staticMethod() {}
+}
+
+int? initLateTopLevelField1(int value) {}
+int? lateTopLevelField1Init;
+late final int? lateTopLevelField1 = initLateTopLevelField1(123);
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline.expect
index 8837f31..24469b3 100644
--- a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline.expect
@@ -1,24 +1,20 @@
-late
-final int? lateTopLevelField;
+late final int? lateTopLevelField;
+
 class Class<T> {
-  static late ;
-  final int? lateStaticField1;
-  static late ;
-  final int? lateStaticField2;
+  static late final int? lateStaticField1;
+  static late final int? lateStaticField2;
   static staticMethod() {}
-  late
-  final int? lateInstanceField;
-  late
-  final T? lateGenericInstanceField;
+  late final int? lateInstanceField;
+  late final T? lateGenericInstanceField;
   instanceMethod(T value) {}
 }
+
 extension Extension<T> on Class<T> {
-  static late ;
-  final int? lateExtensionField1;
-  static late ;
-  final int? lateExtensionField2;
+  static late final int? lateExtensionField1;
+  static late final int? lateExtensionField2;
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3e55c87
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,20 @@
+class Class<T> {
+  instanceMethod(T value) {}
+  late final T? lateGenericInstanceField;
+  late final int? lateInstanceField;
+  static late final int? lateStaticField1;
+  static late final int? lateStaticField2;
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static late final int? lateExtensionField1;
+  static late final int? lateExtensionField2;
+  static staticMethod() {}
+}
+
+late final int? lateTopLevelField;
+main() {}
+throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline.expect
index 234fa27..4503df1 100644
--- a/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline.expect
@@ -1,33 +1,25 @@
 import 'dart:async';
+
 FutureOr method1() => null;
 FutureOr? method2() => null;
 FutureOr<dynamic> method3() => null;
 FutureOr<int> method4() => 0;
 FutureOr<int?> method5() => null;
 FutureOr<int?>? method6() => null;
-late ;
-var field1 = method1();
-late ;
-var field2 = method2();
-late ;
-var field3 = method3();
-late ;
-var field4 = method4();
-late ;
-var field5 = method5();
-late ;
-var field6 = method6();
+late var field1 = method1();
+late var field2 = method2();
+late var field3 = method3();
+late var field4 = method4();
+late var field5 = method5();
+late var field6 = method6();
+
 class C<T> {
-  late
-  FutureOr field1;
-  late
-  FutureOr? field2;
-  late
-  FutureOr<T> field3;
-  late
-  FutureOr<T?> field4;
-  late
-  FutureOr<T?>? field5;
+  late FutureOr field1;
+  late FutureOr? field2;
+  late FutureOr<T> field3;
+  late FutureOr<T?> field4;
+  late FutureOr<T?>? field5;
   method() {}
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f8e8d07
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_future_or.dart.textual_outline_modelled.expect
@@ -0,0 +1,25 @@
+import 'dart:async';
+
+FutureOr<dynamic> method3() => null;
+FutureOr<int> method4() => 0;
+FutureOr<int?>? method6() => null;
+FutureOr<int?> method5() => null;
+FutureOr? method2() => null;
+FutureOr method1() => null;
+
+class C<T> {
+  late FutureOr<T> field3;
+  late FutureOr<T?>? field5;
+  late FutureOr<T?> field4;
+  late FutureOr? field2;
+  late FutureOr field1;
+  method() {}
+}
+
+late var field1 = method1();
+late var field2 = method2();
+late var field3 = method3();
+late var field4 = method4();
+late var field5 = method5();
+late var field6 = method6();
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline.expect
index f3cbcfe..9d5a01c 100644
--- a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline.expect
@@ -1,28 +1,17 @@
 main() {}
 method() {}
-late
-int uninitializedNonFinalTopLevelField;
-late
-final int uninitializedFinalTopLevelField;
-late
-int initializedNonFinalTopLevelField = 0;
-late
-final int initializedFinalTopLevelField = 0;
+late int uninitializedNonFinalTopLevelField;
+late final int uninitializedFinalTopLevelField;
+late int initializedNonFinalTopLevelField = 0;
+late final int initializedFinalTopLevelField = 0;
+
 class Class {
-  static late int ;
-  uninitializedNonFinalStaticField;
-  static late ;
-  final int uninitializedFinalStaticField;
-  static late int ;
-  initializedNonFinalStaticField = 0;
-  static late ;
-  final int initializedFinalStaticField = 0;
-  late
-  int uninitializedNonFinalInstanceField;
-  late
-  final int uninitializedFinalInstanceField;
-  late
-  int initializedNonFinalInstanceField = 0;
-  late
-  final int initializedFinalInstanceField = 0;
+  static late int uninitializedNonFinalStaticField;
+  static late final int uninitializedFinalStaticField;
+  static late int initializedNonFinalStaticField = 0;
+  static late final int initializedFinalStaticField = 0;
+  late int uninitializedNonFinalInstanceField;
+  late final int uninitializedFinalInstanceField;
+  late int initializedNonFinalInstanceField = 0;
+  late final int initializedFinalInstanceField = 0;
 }
diff --git a/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f8574e0
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_lowering_bitmasks.dart.textual_outline_modelled.expect
@@ -0,0 +1,17 @@
+class Class {
+  late final int initializedFinalInstanceField = 0;
+  late final int uninitializedFinalInstanceField;
+  late int initializedNonFinalInstanceField = 0;
+  late int uninitializedNonFinalInstanceField;
+  static late final int initializedFinalStaticField = 0;
+  static late final int uninitializedFinalStaticField;
+  static late int initializedNonFinalStaticField = 0;
+  static late int uninitializedNonFinalStaticField;
+}
+
+late final int initializedFinalTopLevelField = 0;
+late final int uninitializedFinalTopLevelField;
+late int initializedNonFinalTopLevelField = 0;
+late int uninitializedNonFinalTopLevelField;
+main() {}
+method() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline.expect
index 83b91b4..9bad8a8 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline.expect
@@ -1,36 +1,28 @@
 int? lateTopLevelField1Init() => 123;
-late
-int? lateTopLevelField1 = lateTopLevelField1Init();
+late int? lateTopLevelField1 = lateTopLevelField1Init();
+
 class Class<T> {
   static int? lateStaticField1Init() => 87;
-  static late int;
-  operator? (){}
-  lateStaticField1 = lateStaticField1Init();
+  static late int? lateStaticField1 = lateStaticField1Init();
   static int? lateStaticField2Init() => 42;
-  static late int;
-  operator? (){}
-  lateStaticField2 = lateStaticField2Init();
+  static late int? lateStaticField2 = lateStaticField2Init();
   static staticMethod() {}
   int? lateInstanceFieldInit() => 16;
-  late
-  int? lateInstanceField = lateInstanceFieldInit();
+  late int? lateInstanceField = lateInstanceFieldInit();
   final T? field;
   T? lateGenericInstanceFieldInit() => field;
-  late
-  T? lateGenericInstanceField = lateGenericInstanceFieldInit();
+  late T? lateGenericInstanceField = lateGenericInstanceFieldInit();
   Class(this.field);
   instanceMethod(T? value) {}
 }
+
 extension Extension<T> on Class<T> {
   static int? lateExtensionField1Init() => 87;
-  static late int;
-  operator? (){}
-  lateExtensionField1 = lateExtensionField1Init();
+  static late int? lateExtensionField1 = lateExtensionField1Init();
   static int? lateExtensionField2Init() => 42;
-  static late int;
-  operator? (){}
-  lateExtensionField2 = lateExtensionField2Init();
+  static late int? lateExtensionField2 = lateExtensionField2Init();
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..77764d0
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_with_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,28 @@
+class Class<T> {
+  Class(this.field);
+  T? lateGenericInstanceFieldInit() => field;
+  final T? field;
+  instanceMethod(T? value) {}
+  int? lateInstanceFieldInit() => 16;
+  late T? lateGenericInstanceField = lateGenericInstanceFieldInit();
+  late int? lateInstanceField = lateInstanceFieldInit();
+  static int? lateStaticField1Init() => 87;
+  static int? lateStaticField2Init() => 42;
+  static late int? lateStaticField1 = lateStaticField1Init();
+  static late int? lateStaticField2 = lateStaticField2Init();
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static int? lateExtensionField1Init() => 87;
+  static int? lateExtensionField2Init() => 42;
+  static late int? lateExtensionField1 = lateExtensionField1Init();
+  static late int? lateExtensionField2 = lateExtensionField2Init();
+  static staticMethod() {}
+}
+
+int? lateTopLevelField1Init() => 123;
+late int? lateTopLevelField1 = lateTopLevelField1Init();
+main() {}
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline.expect
index d0cb971..9aaec8d 100644
--- a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline.expect
@@ -1,28 +1,20 @@
-late
-int? lateTopLevelField;
+late int? lateTopLevelField;
+
 class Class<T> {
-  static late int;
-  operator? (){}
-  lateStaticField1;
-  static late int;
-  operator? (){}
-  lateStaticField2;
+  static late int? lateStaticField1;
+  static late int? lateStaticField2;
   static staticMethod() {}
-  late
-  int? lateInstanceField;
-  late
-  T? lateGenericInstanceField;
+  late int? lateInstanceField;
+  late T? lateGenericInstanceField;
   instanceMethod(T? value) {}
 }
+
 extension Extension<T> on Class<T> {
-  static late int;
-  operator? (){}
-  lateExtensionField1;
-  static late int;
-  operator? (){}
-  lateExtensionField2;
+  static late int? lateExtensionField1;
+  static late int? lateExtensionField2;
   static staticMethod() {}
 }
+
 main() {}
 expect(expected, actual) {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..9bac5c0
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/late_nullable_field_without_initializer.dart.textual_outline_modelled.expect
@@ -0,0 +1,20 @@
+class Class<T> {
+  instanceMethod(T? value) {}
+  late T? lateGenericInstanceField;
+  late int? lateInstanceField;
+  static late int? lateStaticField1;
+  static late int? lateStaticField2;
+  static staticMethod() {}
+}
+
+expect(expected, actual) {}
+
+extension Extension<T> on Class<T> {
+  static late int? lateExtensionField1;
+  static late int? lateExtensionField2;
+  static staticMethod() {}
+}
+
+late int? lateTopLevelField;
+main() {}
+throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/late_override.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/late_override.dart.textual_outline_modelled.expect
index 61b08f4..8f2ef96 100644
--- a/pkg/front_end/testcases/late_lowering/late_override.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/late_override.dart.textual_outline_modelled.expect
@@ -2,10 +2,9 @@
   int get implementedLateFieldDeclaredGetterSetter => 0;
   void set implementedLateFieldDeclaredGetterSetter(int value) {}
 }
+
 class Interface {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int implementedLateFieldDeclaredGetterSetter;
+  late int implementedLateFieldDeclaredGetterSetter;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/later.dart.textual_outline.expect
index ec9372a..a233f48 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.textual_outline.expect
@@ -1,8 +1,7 @@
 // @dart = 2.9999
 class A {
   int a = 42;
-  late
-  int b = (this.a * 2) >> 1;
+  late int b = (this.a * 2) >> 1;
   foo(late int x) {}
 }
 bar(late int x) {}
@@ -10,13 +9,11 @@
 hest() async {}
 fisk() async {}
 class B {
-  late
-  final int x = 42;
+  late final int x = 42;
   const B();
 }
 class C {
-  late
-  final int x;
+  late final int x;
   initVars() {}
 }
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering/override.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/override.dart.textual_outline_modelled.expect
index 42e50bd..985d234 100644
--- a/pkg/front_end/testcases/late_lowering/override.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/override.dart.textual_outline_modelled.expect
@@ -1,45 +1,23 @@
 class Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int field1;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int field2;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int field3;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int field4;
+  late final int field3;
+  late final int field4;
+  late int field1;
+  late int field2;
 }
+
 class SubClass extends Class {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int field1;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int field2 = 0;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int field3;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int field4 = 0;
   int get directField1 => super.field1;
   int get directField2 => super.field2;
   int get directField3 => super.field3;
   int get directField4 => super.field4;
+  late final int field3;
+  late final int field4 = 0;
+  late int field1;
+  late int field2 = 0;
   void set directField1(int value) {}
   void set directField2(int value) {}
 }
+
 expect(expected, actual) {}
 main() {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.textual_outline_modelled.expect
index 5650775..ef120ac 100644
--- a/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/override_getter_setter.dart.textual_outline_modelled.expect
@@ -1,27 +1,18 @@
 class A {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int x;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int? y;
+  late final int? y;
+  late final int x;
 }
+
 class B extends A {
   int? get y => 1;
   int get x => 1;
 }
+
 class C extends A {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int x = 2;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int? y = 2;
+  late final int? y = 2;
+  late final int x = 2;
 }
+
 expect(expected, actual) {}
 main() {}
 throws(f(), String message) {}
diff --git a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline.expect b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline.expect
index f3cbcfe..9d5a01c 100644
--- a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline.expect
@@ -1,28 +1,17 @@
 main() {}
 method() {}
-late
-int uninitializedNonFinalTopLevelField;
-late
-final int uninitializedFinalTopLevelField;
-late
-int initializedNonFinalTopLevelField = 0;
-late
-final int initializedFinalTopLevelField = 0;
+late int uninitializedNonFinalTopLevelField;
+late final int uninitializedFinalTopLevelField;
+late int initializedNonFinalTopLevelField = 0;
+late final int initializedFinalTopLevelField = 0;
+
 class Class {
-  static late int ;
-  uninitializedNonFinalStaticField;
-  static late ;
-  final int uninitializedFinalStaticField;
-  static late int ;
-  initializedNonFinalStaticField = 0;
-  static late ;
-  final int initializedFinalStaticField = 0;
-  late
-  int uninitializedNonFinalInstanceField;
-  late
-  final int uninitializedFinalInstanceField;
-  late
-  int initializedNonFinalInstanceField = 0;
-  late
-  final int initializedFinalInstanceField = 0;
+  static late int uninitializedNonFinalStaticField;
+  static late final int uninitializedFinalStaticField;
+  static late int initializedNonFinalStaticField = 0;
+  static late final int initializedFinalStaticField = 0;
+  late int uninitializedNonFinalInstanceField;
+  late final int uninitializedFinalInstanceField;
+  late int initializedNonFinalInstanceField = 0;
+  late final int initializedFinalInstanceField = 0;
 }
diff --git a/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f8574e0
--- /dev/null
+++ b/pkg/front_end/testcases/late_lowering/skip_late_final_uninitialized_instance_fields/main.dart.textual_outline_modelled.expect
@@ -0,0 +1,17 @@
+class Class {
+  late final int initializedFinalInstanceField = 0;
+  late final int uninitializedFinalInstanceField;
+  late int initializedNonFinalInstanceField = 0;
+  late int uninitializedNonFinalInstanceField;
+  static late final int initializedFinalStaticField = 0;
+  static late final int uninitializedFinalStaticField;
+  static late int initializedNonFinalStaticField = 0;
+  static late int uninitializedNonFinalStaticField;
+}
+
+late final int initializedFinalTopLevelField = 0;
+late final int uninitializedFinalTopLevelField;
+late int initializedNonFinalTopLevelField = 0;
+late int uninitializedNonFinalTopLevelField;
+main() {}
+method() {}
diff --git a/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect
index 16afc20..7ac9d0c 100644
--- a/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect
@@ -1,9 +1,7 @@
 class A {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   A.bar();
   A.foo(this.x);
-  int x;
+  late int x;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.textual_outline_modelled.expect
index 8b9ef40..dee46f9 100644
--- a/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/late_lowering_sentinel/late_fields.dart.textual_outline_modelled.expect
@@ -1,37 +1,10 @@
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-int? nullableTopLevelField;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-int nonNullableTopLevelField;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-int? nullableTopLevelFieldWithInitializer = null;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-int nonNullableTopLevelFieldWithInitializer = 0;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-final int? nullableFinalTopLevelField;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-final int nonNullableFinalTopLevelField;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-final int? nullableFinalTopLevelFieldWithInitializer = null;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-final int nonNullableFinalTopLevelFieldWithInitializer = 0;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-Never neverTopLevelField;
+late Never neverTopLevelField;
+late final int? nullableFinalTopLevelField;
+late final int? nullableFinalTopLevelFieldWithInitializer = null;
+late final int nonNullableFinalTopLevelField;
+late final int nonNullableFinalTopLevelFieldWithInitializer = 0;
+late int? nullableTopLevelField;
+late int? nullableTopLevelFieldWithInitializer = null;
+late int nonNullableTopLevelField;
+late int nonNullableTopLevelFieldWithInitializer = 0;
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/abstract_field_errors.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/abstract_field_errors.dart.textual_outline.expect
index a2e1e46..539c274 100644
--- a/pkg/front_end/testcases/nnbd/abstract_field_errors.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/abstract_field_errors.dart.textual_outline.expect
@@ -8,16 +8,14 @@
   A(this.initializedField1) : this.initializedField2 = 0;
   abstract static int staticField;
   abstract static final int finalStaticField;
-  abstract late int ;
-  lateInstanceField;
+  abstract late int lateInstanceField;
   external abstract int externalInstanceField1;
   external abstract final int externalFinalInstanceField1;
   external abstract covariant num externalCovariantInstanceField1;
   abstract external int externalInstanceField2;
   abstract external final int externalFinalInstanceField2;
   abstract external covariant num externalCovariantInstanceField2;
-  external abstract late int ;
-  externalLateInstanceField;
+  external abstract late int externalLateInstanceField;
 }
 mixin B {
   abstract static int staticField;
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect
index 042fbfc..abe4f27 100644
--- a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline.expect
@@ -1,25 +1,27 @@
 class A {
-  late
-  num invariantField;
-  covariant late num ;
-  covariantField;
+  late num invariantField;
+  covariant late num covariantField;
 }
+
 abstract class B implements A {
   get invariantField;
   set invariantField(value);
   get covariantField;
   set covariantField(value);
 }
+
 abstract class C implements A {
   int get invariantField;
   void set invariantField(int value) {}
   int get covariantField;
   void set covariantField(int value) {}
 }
+
 abstract class D implements A {
   int get invariantField;
   void set invariantField(covariant int value) {}
   int get covariantField;
   void set covariantField(covariant int value) {}
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..bc5284c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/covariant_late_field.dart.textual_outline_modelled.expect
@@ -0,0 +1,27 @@
+abstract class B implements A {
+  get covariantField;
+  get invariantField;
+  set covariantField(value);
+  set invariantField(value);
+}
+
+abstract class C implements A {
+  int get covariantField;
+  int get invariantField;
+  void set covariantField(int value) {}
+  void set invariantField(int value) {}
+}
+
+abstract class D implements A {
+  int get covariantField;
+  int get invariantField;
+  void set covariantField(covariant int value) {}
+  void set invariantField(covariant int value) {}
+}
+
+class A {
+  covariant late num covariantField;
+  late num invariantField;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect
index 904d130..6eaba30 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect
@@ -1,4 +1,9 @@
 class Class {
+  final int instanceDuplicateFieldAndDuplicateSetter = 1;
+  final int instanceDuplicateFieldAndDuplicateSetter = 2;
+  final int instanceDuplicateFieldAndSetter = 1;
+  final int instanceDuplicateFieldAndSetter = 2;
+  final int instanceFieldAndDuplicateSetter = 1;
   int get instanceGetter => 1;
   int get instanceGetter => 2;
   int instanceField = 1;
@@ -7,35 +12,25 @@
   int instanceFieldAndSetter2 = 1;
   int instanceMethod() => 1;
   int instanceMethod() => 2;
-  void set instanceFieldAndSetter1(int value) {}
-  void set instanceFieldAndSetter2(int value) {}
-  void set instanceSetter(value) {}
-  void set instanceSetter(value) {}
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int instanceLateFinalFieldAndSetter1;
-  void set instanceLateFinalFieldAndSetter1(int value) {}
-  void set instanceLateFinalFieldAndSetter2(int value) {}
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int instanceDuplicateFieldAndDuplicateSetter = 1;
-  final int instanceDuplicateFieldAndDuplicateSetter = 2;
-  final int instanceDuplicateFieldAndSetter = 1;
-  final int instanceDuplicateFieldAndSetter = 2;
-  final int instanceFieldAndDuplicateSetter = 1;
-  final int instanceLateFinalFieldAndSetter2;
   int instanceMethodAndSetter1() => 1;
   int instanceMethodAndSetter2() => 1;
+  late final int instanceLateFinalFieldAndSetter1;
+  late final int instanceLateFinalFieldAndSetter2;
   void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
   void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
   void set instanceDuplicateFieldAndSetter(int value) {}
   void set instanceFieldAndDuplicateSetter(int value) {}
   void set instanceFieldAndDuplicateSetter(int value) {}
+  void set instanceFieldAndSetter1(int value) {}
+  void set instanceFieldAndSetter2(int value) {}
+  void set instanceLateFinalFieldAndSetter1(int value) {}
+  void set instanceLateFinalFieldAndSetter2(int value) {}
   void set instanceMethodAndSetter1(int value) {}
   void set instanceMethodAndSetter2(int value) {}
+  void set instanceSetter(value) {}
+  void set instanceSetter(value) {}
 }
+
 expect(expected, actual) {}
 main() {}
 test() {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect
index a945e40..cbf4019 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect
@@ -12,12 +12,10 @@
   void set instanceFieldAndSetter1(int value) {}
   void set instanceFieldAndSetter2(int value) {}
   int instanceFieldAndSetter2 = 1;
-  late
-  final int instanceLateFinalFieldAndSetter1;
+  late final int instanceLateFinalFieldAndSetter1;
   void set instanceLateFinalFieldAndSetter1(int value) {}
   void set instanceLateFinalFieldAndSetter2(int value) {}
-  late
-  final int instanceLateFinalFieldAndSetter2;
+  late final int instanceLateFinalFieldAndSetter2;
   final int instanceDuplicateFieldAndSetter = 1;
   final int instanceDuplicateFieldAndSetter = 2;
   void set instanceDuplicateFieldAndSetter(int value) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect
index d898cdf..c9f0aeb 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect
@@ -1,4 +1,5 @@
 var result;
+
 class Class {
   static int staticMethod() => 1;
   static int staticMethod() => 2;
@@ -12,12 +13,10 @@
   static void set staticFieldAndSetter1(int value) {}
   static void set staticFieldAndSetter2(int value) {}
   static int staticFieldAndSetter2 = 1;
-  static late ;
-  final int staticLateFinalFieldAndSetter1;
+  static late final int staticLateFinalFieldAndSetter1;
   static void set staticLateFinalFieldAndSetter1(int value) {}
   static void set staticLateFinalFieldAndSetter2(int value) {}
-  static late ;
-  final int staticLateFinalFieldAndSetter2;
+  static late final int staticLateFinalFieldAndSetter2;
   static final int staticDuplicateFieldAndSetter = 1;
   static final int staticDuplicateFieldAndSetter = 2;
   static void set staticDuplicateFieldAndSetter(int value) {}
@@ -33,6 +32,7 @@
   static void set staticMethodAndSetter2(int value) {}
   static int staticMethodAndSetter2() => 1;
 }
+
 test() {}
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..cd6899a
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline_modelled.expect
@@ -0,0 +1,38 @@
+class Class {
+  static final int staticDuplicateFieldAndDuplicateSetter = 1;
+  static final int staticDuplicateFieldAndDuplicateSetter = 2;
+  static final int staticDuplicateFieldAndSetter = 1;
+  static final int staticDuplicateFieldAndSetter = 2;
+  static final int staticFieldAndDuplicateSetter = 1;
+  static int get staticGetter => 1;
+  static int get staticGetter => 2;
+  static int staticField = 1;
+  static int staticField = 2;
+  static int staticFieldAndSetter1 = 1;
+  static int staticFieldAndSetter2 = 1;
+  static int staticMethod() => 1;
+  static int staticMethod() => 2;
+  static int staticMethodAndSetter1() => 1;
+  static int staticMethodAndSetter2() => 1;
+  static late final int staticLateFinalFieldAndSetter1;
+  static late final int staticLateFinalFieldAndSetter2;
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static void set staticDuplicateFieldAndSetter(int value) {}
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static void set staticFieldAndSetter1(int value) {}
+  static void set staticFieldAndSetter2(int value) {}
+  static void set staticLateFinalFieldAndSetter1(int value) {}
+  static void set staticLateFinalFieldAndSetter2(int value) {}
+  static void set staticMethodAndSetter1(int value) {}
+  static void set staticMethodAndSetter2(int value) {}
+  static void set staticSetter(value) {}
+  static void set staticSetter(value) {}
+}
+
+expect(expected, actual) {}
+main() {}
+test() {}
+throws(dynamic Function() f) {}
+var result;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect
index f6bcecd..f508a73 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect
@@ -1,4 +1,5 @@
 var result;
+
 extension Extension on int {
   static int staticMethod() => 1;
   static int staticMethod() => 2;
@@ -12,12 +13,10 @@
   static void set staticFieldAndSetter1(int value) {}
   static void set staticFieldAndSetter2(int value) {}
   static int staticFieldAndSetter2 = 1;
-  static late ;
-  final int staticLateFinalFieldAndSetter1;
+  static late final int staticLateFinalFieldAndSetter1;
   static void set staticLateFinalFieldAndSetter1(int value) {}
   static void set staticLateFinalFieldAndSetter2(int value) {}
-  static late ;
-  final int staticLateFinalFieldAndSetter2;
+  static late final int staticLateFinalFieldAndSetter2;
   static final int staticDuplicateFieldAndSetter = 1;
   static final int staticDuplicateFieldAndSetter = 2;
   static void set staticDuplicateFieldAndSetter(int value) {}
@@ -33,6 +32,7 @@
   static void set staticMethodAndSetter2(int value) {}
   static int staticMethodAndSetter2() => 1;
 }
+
 test() {}
 main() {}
 expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..764b59f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline_modelled.expect
@@ -0,0 +1,39 @@
+expect(expected, actual) {}
+
+extension Extension on int {
+  static final int staticDuplicateFieldAndDuplicateSetter = 1;
+  static final int staticDuplicateFieldAndDuplicateSetter = 2;
+  static final int staticDuplicateFieldAndSetter = 1;
+  static final int staticDuplicateFieldAndSetter = 2;
+  static final int staticFieldAndDuplicateSetter = 1;
+  static int get staticGetter => 1;
+  static int get staticGetter => 2;
+  static int staticField = 1;
+  static int staticField = 2;
+  static int staticFieldAndSetter1 = 1;
+  static int staticFieldAndSetter2 = 1;
+  static int staticMethod() => 1;
+  static int staticMethod() => 2;
+  static int staticMethodAndSetter1() => 1;
+  static int staticMethodAndSetter2() => 1;
+  static late final int staticLateFinalFieldAndSetter1;
+  static late final int staticLateFinalFieldAndSetter2;
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static void set staticDuplicateFieldAndSetter(int value) {}
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static void set staticFieldAndSetter1(int value) {}
+  static void set staticFieldAndSetter2(int value) {}
+  static void set staticLateFinalFieldAndSetter1(int value) {}
+  static void set staticLateFinalFieldAndSetter2(int value) {}
+  static void set staticMethodAndSetter1(int value) {}
+  static void set staticMethodAndSetter2(int value) {}
+  static void set staticSetter(value) {}
+  static void set staticSetter(value) {}
+}
+
+main() {}
+test() {}
+throws(dynamic Function() f) {}
+var result;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
index b5d58c1..e35c340 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
@@ -4,8 +4,6 @@
 final int topLevelDuplicateFieldAndSetter = 1;
 final int topLevelDuplicateFieldAndSetter = 2;
 final int topLevelFieldAndDuplicateSetter = 1;
-final int topLevelLateFinalFieldAndSetter1;
-final int topLevelLateFinalFieldAndSetter2;
 int get topLevelGetter => 1;
 int get topLevelGetter => 2;
 int topLevelField = 1;
@@ -14,29 +12,25 @@
 int topLevelFieldAndSetter2 = 1;
 int topLevelMethod() => 1;
 int topLevelMethod() => 2;
-void set topLevelLateFinalFieldAndSetter1(int value) {}
-void set topLevelLateFinalFieldAndSetter2(int value) {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
+int topLevelMethodAndSetter1() => 1;
+int topLevelMethodAndSetter2() => 1;
+late final int topLevelLateFinalFieldAndSetter1;
+late final int topLevelLateFinalFieldAndSetter2;
+main() {}
+@topLevelMethod
+test() {}
 throws(dynamic Function() f) {}
+var field = topLevelMethod;
 var result;
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
 void set topLevelDuplicateFieldAndSetter(int value) {}
 void set topLevelFieldAndDuplicateSetter(int value) {}
 void set topLevelFieldAndDuplicateSetter(int value) {}
 void set topLevelFieldAndSetter1(int value) {}
 void set topLevelFieldAndSetter2(int value) {}
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-int topLevelMethodAndSetter1() => 1;
-int topLevelMethodAndSetter2() => 1;
-main() {}
-@topLevelMethod
-test() {}
-var field = topLevelMethod;
-void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
-void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
+void set topLevelLateFinalFieldAndSetter1(int value) {}
+void set topLevelLateFinalFieldAndSetter2(int value) {}
 void set topLevelMethodAndSetter1(int value) {}
 void set topLevelMethodAndSetter2(int value) {}
 void set topLevelSetter(value) {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
index 93febe8..ac91955 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
@@ -9,11 +9,9 @@
 final int? duplicateTopLevelFieldAndSetter2 = null;
 int? duplicateTopLevelFieldAndSetter2;
 void set duplicateTopLevelFieldAndSetter2(int? value) {}
-late
-final int? topLevelLateFinalFieldAndSetter;
+late final int? topLevelLateFinalFieldAndSetter;
 void set topLevelLateFinalFieldAndSetter(int? value) {}
-late
-final int? topLevelLateFinalFieldAndDuplicateSetter;
+late final int? topLevelLateFinalFieldAndDuplicateSetter;
 void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
 void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
 class Class {
@@ -28,11 +26,9 @@
   final int? duplicateInstanceFieldAndSetter2 = null;
   int? duplicateInstanceFieldAndSetter2;
   void set duplicateInstanceFieldAndSetter2(int? value) {}
-  late
-  final int? instanceLateFinalFieldAndSetter;
+  late final int? instanceLateFinalFieldAndSetter;
   void set instanceLateFinalFieldAndSetter(int? value) {}
-  late
-  final int? instanceLateFinalFieldAndDuplicateSetter;
+  late final int? instanceLateFinalFieldAndDuplicateSetter;
   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
   static int? staticFieldAndSetter;
@@ -46,11 +42,9 @@
   static final int? duplicateStaticFieldAndSetter2 = null;
   static int? duplicateStaticFieldAndSetter2;
   static void set duplicateStaticFieldAndSetter2(int? value) {}
-  static late ;
-  final int? staticLateFinalFieldAndSetter;
+  static late final int? staticLateFinalFieldAndSetter;
   static void set staticLateFinalFieldAndSetter(int? value) {}
-  static late ;
-  final int? staticLateFinalFieldAndDuplicateSetter;
+  static late final int? staticLateFinalFieldAndDuplicateSetter;
   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
   static int? staticFieldAndInstanceSetter;
@@ -99,11 +93,9 @@
   static final int? duplicateExtensionStaticFieldAndSetter2 = null;
   static int? duplicateExtensionStaticFieldAndSetter2;
   static void set duplicateExtensionStaticFieldAndSetter2(int? value) {}
-  static late ;
-  final int? extensionStaticLateFinalFieldAndSetter;
+  static late final int? extensionStaticLateFinalFieldAndSetter;
   static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
-  static late ;
-  final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+  static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
   static int? extensionStaticFieldAndInstanceSetter;
diff --git a/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline.expect
index 2470729..80e8244 100644
--- a/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline.expect
@@ -1,38 +1,34 @@
 abstract class A {
-  late
-  int property4;
-  late
-  int? property5;
-  covariant late int ;
-  property6;
+  late int property4;
+  late int? property5;
+  covariant late int property6;
   A(this.property4, this.property5, this.property6);
 }
+
 abstract class B1 {
-  late
-  final int property4;
-  late
-  final int property5;
-  late
-  final int? property6;
+  late final int property4;
+  late final int property5;
+  late final int? property6;
   B1(this.property4, this.property5, this.property6);
 }
+
 abstract class B2 implements B1 {
   void set property4(int i);
   void set property5(int? i);
   void set property6(int i);
 }
+
 abstract class C1 {
-  late
-  int property4;
-  late
-  int property5;
-  late
-  int property6;
+  late int property4;
+  late int property5;
+  late int property6;
   C1(this.property4, this.property5, this.property6);
 }
+
 abstract class C2 implements C1 {
   int get property4;
   int get property5;
   int? get property6;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..c07c6aa
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/getter_vs_setter_type_late.dart.textual_outline_modelled.expect
@@ -0,0 +1,34 @@
+abstract class A {
+  A(this.property4, this.property5, this.property6);
+  covariant late int property6;
+  late int? property5;
+  late int property4;
+}
+
+abstract class B1 {
+  B1(this.property4, this.property5, this.property6);
+  late final int? property6;
+  late final int property4;
+  late final int property5;
+}
+
+abstract class B2 implements B1 {
+  void set property4(int i);
+  void set property5(int? i);
+  void set property6(int i);
+}
+
+abstract class C1 {
+  C1(this.property4, this.property5, this.property6);
+  late int property4;
+  late int property5;
+  late int property6;
+}
+
+abstract class C2 implements C1 {
+  int? get property6;
+  int get property4;
+  int get property5;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline.expect
index f2867b2..ec1d8d5 100644
--- a/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline.expect
@@ -1,8 +1,9 @@
 main() {}
+
 class C {
-  covariant late ;
-  final int x;
+  covariant late final int x;
 }
+
 class D extends C {
   set x(num value) {}
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f06b890
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue40805.dart.textual_outline_modelled.expect
@@ -0,0 +1,9 @@
+class C {
+  covariant late final int x;
+}
+
+class D extends C {
+  set x(num value) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue42967.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue42967.dart.textual_outline_modelled.expect
index 284430e8..3c5f3a7 100644
--- a/pkg/front_end/testcases/nnbd/issue42967.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/issue42967.dart.textual_outline_modelled.expect
@@ -4,51 +4,37 @@
   external final dynamic fieldExternalFinalDynamicOfAbstractA;
   external num fieldExternalNonNullableOfAbstractA;
 }
+
 abstract class AbstractB {
   abstract final dynamic fieldAbstractFinalDynamicOfAbstractB;
   abstract num fieldAbstractNonNullableOfAbstractB;
   external final dynamic fieldExternalFinalDynamicOfAbstractB;
   external num fieldExternalNonNullableOfAbstractB;
 }
+
 class A {
-  num fieldNonNullableOfA;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   final dynamic fieldFinalDynamicOfA;
-  num fieldLateNonNullableOfA;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final dynamic fieldLateFinalDynamicOfA;
+  late final dynamic fieldLateFinalDynamicOfA;
+  late num fieldLateNonNullableOfA;
+  num fieldNonNullableOfA;
 }
+
 class B {
-  num fieldNonNullableOfB;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final dynamic fieldFinalDynamicOfB;
-  num fieldLateNonNullableOfB;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   factory B() => throw 42;
-  final dynamic fieldLateFinalDynamicOfB;
+  final dynamic fieldFinalDynamicOfB;
+  late final dynamic fieldLateFinalDynamicOfB;
+  late num fieldLateNonNullableOfB;
+  num fieldNonNullableOfB;
 }
+
 main() {}
 mixin M {
-  num fieldNonNullableOfM;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
+  abstract final dynamic fieldAbstractFinalDynamicOfM;
   abstract num fieldAbstractNonNullableOfM;
+  external final dynamic fieldExternalFinalDynamicOfM;
   external num fieldExternalNonNullableOfM;
   final dynamic fieldFinalDynamicOfM;
-  num fieldLateNonNullableOfM;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  abstract final dynamic fieldAbstractFinalDynamicOfM;
-  external final dynamic fieldExternalFinalDynamicOfM;
-  final dynamic fieldLateFinalDynamicOfM;
+  late final dynamic fieldLateFinalDynamicOfM;
+  late num fieldLateNonNullableOfM;
+  num fieldNonNullableOfM;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue43354.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue43354.dart.textual_outline_modelled.expect
index 8e86312..cd9e6d4 100644
--- a/pkg/front_end/testcases/nnbd/issue43354.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/issue43354.dart.textual_outline_modelled.expect
@@ -1,39 +1,25 @@
 class A {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   const A();
-  final int foo = 42;
+  late final int foo = 42;
 }
+
 class B {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int foo = 42;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   const B();
-  final String bar = "foobar";
+  late final String bar = "foobar";
+  late final int foo = 42;
 }
+
 class C {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   const C();
   const C.another();
-  final int foo = 42;
+  late final int foo = 42;
 }
+
 class D {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  final int foo = 42;
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   const D();
   const D.another();
-  final String bar = "foobar";
+  late final String bar = "foobar";
+  late final int foo = 42;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue43689.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue43689.dart.textual_outline_modelled.expect
index 400ab13..9917b71 100644
--- a/pkg/front_end/testcases/nnbd/issue43689.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/issue43689.dart.textual_outline_modelled.expect
@@ -1,10 +1,4 @@
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-final int y;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-final int? y;
+late final int? y;
+late final int y;
 main() {}
 test() {}
diff --git a/pkg/front_end/testcases/nnbd/late.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/late.dart.textual_outline.expect
index 78b3d91..aede912 100644
--- a/pkg/front_end/testcases/nnbd/late.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/late.dart.textual_outline.expect
@@ -1,33 +1,22 @@
-late
-int lateTopLevelField;
-late
-final int lateFinalTopLevelField;
-late
-final int lateFinalTopLevelFieldWithInit = 0;
+late int lateTopLevelField;
+late final int lateFinalTopLevelField;
+late final int lateFinalTopLevelFieldWithInit = 0;
+
 class Class {
-  late
-  int lateInstanceField;
-  late
-  final int lateFinalInstanceField1;
-  late
-  final int lateFinalInstanceField2;
-  late
-  final int lateFinalInstanceFieldWithInit = 0;
-  late
-  Class lateInstanceFieldThis = this;
-  late
-  final Class lateFinalInstanceFieldThis = this;
-  static late int ;
-  lateStaticField;
-  static late ;
-  final int lateFinalStaticField1;
-  static late ;
-  final int lateFinalStaticField2;
-  static late ;
-  final int lateFinalStaticFieldWithInit = 0;
+  late int lateInstanceField;
+  late final int lateFinalInstanceField1;
+  late final int lateFinalInstanceField2;
+  late final int lateFinalInstanceFieldWithInit = 0;
+  late Class lateInstanceFieldThis = this;
+  late final Class lateFinalInstanceFieldThis = this;
+  static late int lateStaticField;
+  static late final int lateFinalStaticField1;
+  static late final int lateFinalStaticField2;
+  static late final int lateFinalStaticFieldWithInit = 0;
   method() {}
   methodWithErrors() {}
 }
+
 main() {}
 noErrors() {}
 errors() {}
diff --git a/pkg/front_end/testcases/nnbd/late.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/late.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..16f1f6d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/late.dart.textual_outline_modelled.expect
@@ -0,0 +1,21 @@
+class Class {
+  late Class lateInstanceFieldThis = this;
+  late final Class lateFinalInstanceFieldThis = this;
+  late final int lateFinalInstanceField1;
+  late final int lateFinalInstanceField2;
+  late final int lateFinalInstanceFieldWithInit = 0;
+  late int lateInstanceField;
+  method() {}
+  methodWithErrors() {}
+  static late final int lateFinalStaticField1;
+  static late final int lateFinalStaticField2;
+  static late final int lateFinalStaticFieldWithInit = 0;
+  static late int lateStaticField;
+}
+
+errors() {}
+late final int lateFinalTopLevelField;
+late final int lateFinalTopLevelFieldWithInit = 0;
+late int lateTopLevelField;
+main() {}
+noErrors() {}
diff --git a/pkg/front_end/testcases/nnbd/later.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/later.dart.textual_outline.expect
index d06dcad..046bb90 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.textual_outline.expect
@@ -1,7 +1,6 @@
 class A {
   int a = 42;
-  late
-  int b = (this.a * 2) >> 1;
+  late int b = (this.a * 2) >> 1;
   foo(late int x) {}
 }
 bar(late int x) {}
@@ -9,13 +8,11 @@
 hest() async {}
 fisk() async {}
 class B {
-  late
-  final int x = 42;
+  late final int x = 42;
   const B();
 }
 class C {
-  late
-  final int x;
+  late final int x;
   initVars() {}
 }
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline.expect
index 98dd013..0d2bac1 100644
--- a/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline.expect
@@ -1,17 +1,21 @@
 class Foo {}
+
 int topLevelField;
+
 class A {
   static int staticFieldOfA;
   int fieldOfA;
   A.foo();
   A.bar(this.fieldOfA);
 }
+
 class B<X extends Object?, Y extends Object> {
   X fieldOfB;
   Y fieldOfB2;
   B.foo();
   B.bar(this.fieldOfB, this.fieldOfB2);
 }
+
 mixin M {
   static int staticFieldOfM;
   int fieldOfM;
@@ -20,13 +24,15 @@
   X fieldOfN;
   Y fieldOfN2;
 }
+
 extension P on Foo {
   static int staticFieldOfE;
 }
+
 int? nullableTopLevelField;
-late
-int lateTopLevelField;
+late int lateTopLevelField;
 int topLevelFieldWithInitializer = 42;
+
 class C<X extends Object?, Y extends Object> {
   static int? staticFieldOfX;
   static int staticFieldOfXInitialized = 42;
@@ -36,18 +42,15 @@
   Null fieldOfX4;
   int Function()? fieldOfX5;
   Y? fieldOfX6;
-  static late int ;
-  lateStaticFieldOfC;
-  late
-  int fieldOfC7;
-  late
-  X fieldOfC8;
-  late
-  Y fieldOfC9;
+  static late int lateStaticFieldOfC;
+  late int fieldOfC7;
+  late X fieldOfC8;
+  late Y fieldOfC9;
   int fieldOfC10;
   C.foo(this.fieldOfC10);
   C.bar(this.fieldOfC10);
 }
+
 mixin L<X extends Object?, Y extends Object> {
   static int? staticFieldOfL;
   static int staticFieldOfLInitialized = 42;
@@ -57,19 +60,16 @@
   Null fieldOfL4;
   int Function()? fieldOfL5;
   Y? fieldOfL6;
-  static late int ;
-  lateStaticFieldOfM;
-  late
-  int fieldOfM7;
-  late
-  X fieldOfM8;
-  late
-  Y fieldOfM9;
+  static late int lateStaticFieldOfM;
+  late int fieldOfM7;
+  late X fieldOfM8;
+  late Y fieldOfM9;
 }
+
 extension Q on Foo {
   static int? staticFieldOfQ;
-  static late int ;
-  lateStaticFieldOfQ;
+  static late int lateStaticFieldOfQ;
   static int staticFieldOfQInitialized = 42;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..589a538f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart.textual_outline_modelled.expect
@@ -0,0 +1,71 @@
+class A {
+  A.bar(this.fieldOfA);
+  A.foo();
+  int fieldOfA;
+  static int staticFieldOfA;
+}
+
+class B<X extends Object?, Y extends Object> {
+  B.bar(this.fieldOfB, this.fieldOfB2);
+  B.foo();
+  X fieldOfB;
+  Y fieldOfB2;
+}
+
+class C<X extends Object?, Y extends Object> {
+  C.bar(this.fieldOfC10);
+  C.foo(this.fieldOfC10);
+  Null fieldOfX4;
+  X? fieldOfX;
+  Y? fieldOfX6;
+  dynamic fieldOfX3;
+  int? fieldOfX2;
+  int Function()? fieldOfX5;
+  int fieldOfC10;
+  late X fieldOfC8;
+  late Y fieldOfC9;
+  late int fieldOfC7;
+  static int? staticFieldOfX;
+  static int staticFieldOfXInitialized = 42;
+  static late int lateStaticFieldOfC;
+}
+
+class Foo {}
+
+extension P on Foo {
+  static int staticFieldOfE;
+}
+
+extension Q on Foo {
+  static int? staticFieldOfQ;
+  static int staticFieldOfQInitialized = 42;
+  static late int lateStaticFieldOfQ;
+}
+
+int? nullableTopLevelField;
+int topLevelField;
+int topLevelFieldWithInitializer = 42;
+late int lateTopLevelField;
+main() {}
+mixin L<X extends Object?, Y extends Object> {
+  Null fieldOfL4;
+  X? fieldOfL;
+  Y? fieldOfL6;
+  dynamic fieldOfL3;
+  int? fieldOfL2;
+  int Function()? fieldOfL5;
+  late X fieldOfM8;
+  late Y fieldOfM9;
+  late int fieldOfM7;
+  static int? staticFieldOfL;
+  static int staticFieldOfLInitialized = 42;
+  static late int lateStaticFieldOfM;
+}
+mixin M {
+  int fieldOfM;
+  static int staticFieldOfM;
+}
+mixin N<X extends Object?, Y extends Object> {
+  X fieldOfN;
+  Y fieldOfN2;
+}
diff --git a/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline.expect
index 82cafac..5b4ef28 100644
--- a/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline.expect
@@ -1,24 +1,24 @@
 int x;
 int? y;
-late
-int z;
+late int z;
+
 class A<T extends Object?> {
   static int x;
   static int? y;
-  static late int ;
-  z;
+  static late int z;
   int lx;
   int? ly;
-  late
-  int? lz;
+  late int? lz;
   int lv;
   int lu;
   T lt;
   T? ls;
-  late
-  T lr;
+  late T lr;
   T lp;
   T lq;
-  A(this.lv, this.lp, T t) : this.lu = 42, this.lq = t;
+  A(this.lv, this.lp, T t)
+      : this.lu = 42,
+        this.lq = t;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..9605c20
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart.textual_outline_modelled.expect
@@ -0,0 +1,23 @@
+class A<T extends Object?> {
+  A(this.lv, this.lp, T t)
+      : this.lu = 42,
+        this.lq = t;
+  T? ls;
+  T lp;
+  T lq;
+  T lt;
+  int? ly;
+  int lu;
+  int lv;
+  int lx;
+  late T lr;
+  late int? lz;
+  static int? y;
+  static int x;
+  static late int z;
+}
+
+int? y;
+int x;
+late int z;
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect
index 16afc20..7ac9d0c 100644
--- a/pkg/front_end/testcases/nnbd/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/uninitialized_non_nullable_late_fields.dart.textual_outline_modelled.expect
@@ -1,9 +1,7 @@
 class A {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
   A.bar();
   A.foo(this.x);
-  int x;
+  late int x;
 }
+
 main() {}
diff --git a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.textual_outline_modelled.expect
index 83adde2..28d9837 100644
--- a/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/opt_out.dart.textual_outline_modelled.expect
@@ -1,20 +1,18 @@
 // @dart = 2.12
 import 'opt_out_lib.dart';
+
 List<String?> l = [];
 String? s = null;
+
 class A<T> {
-  ---- unknown chunk starts ----
-late
----- unknown chunk ends ----
-  int field = 42;
+  late int field = 42;
 }
+
 class B extends A<String?> {}
-typedef F = void Function()?;
-var t = s!;
----- unknown chunk starts ----
-late
----- unknown chunk ends ----
-int field = 42;
+
+late int field = 42;
 main() {}
 noErrors() {}
+typedef F = void Function()?;
+var t = s!;
 void method(void f()?, {required int a}) {}
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/regress/issue_31188.dart.textual_outline_modelled.expect
deleted file mode 100644
index d41cad3..0000000
--- a/pkg/front_end/testcases/regress/issue_31188.dart.textual_outline_modelled.expect
+++ /dev/null
@@ -1,2 +0,0 @@
-main() {}
-type T = Map<A, B>;
diff --git a/pkg/front_end/testcases/regress/issue_31192.dart.textual_outline.expect b/pkg/front_end/testcases/regress/issue_31192.dart.textual_outline.expect
index 1bbd124..eb6614e 100644
--- a/pkg/front_end/testcases/regress/issue_31192.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31192.dart.textual_outline.expect
@@ -1,6 +1,5 @@
 class Increment {
-  late
-  int x;
+  late int x;
   Increment() : =x++ {}
 }
 main() {}
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 24f427a..7be4428 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -20,14 +20,12 @@
 regress/issue_39091_2: EmptyOutput
 regress/utf_16_le_content.crash: EmptyOutput
 
-const_functions/const_functions_const_ctor: FormatterCrash
 const_functions/const_functions_const_ctor_error: FormatterCrash
+const_functions/const_functions_const_ctor: FormatterCrash
 const_functions/const_functions_const_factory: FormatterCrash
 constructor_tearoffs/issue46133: FormatterCrash
 constructor_tearoffs/issue47075: FormatterCrash
 constructor_tearoffs/new_as_selector: FormatterCrash
-dart2js/late_fields: FormatterCrash
-dart2js/late_statics: FormatterCrash
 enhanced_enums/recovery_in_elements: FormatterCrash
 extension_types/basic_show: FormatterCrash
 extension_types/call_not_get: FormatterCrash
@@ -39,8 +37,8 @@
 extension_types/simple_operator_resolution: FormatterCrash
 extension_types/simple_setter_resolution: FormatterCrash
 extension_types/simple_show_and_hide: FormatterCrash
-extension_types/simple_show_hide: FormatterCrash
 extension_types/simple_show_hide_conflicts: FormatterCrash
+extension_types/simple_show_hide: FormatterCrash
 extension_types/type_variable_in_static_context: FormatterCrash
 extension_types/various_hide_elements: FormatterCrash
 extension_types/various_show_elements: FormatterCrash
@@ -53,15 +51,14 @@
 general/bad_setter_abstract: FormatterCrash
 general/bug31124: FormatterCrash
 general/clone_function_type: FormatterCrash
-general/constants/js_semantics/number_folds: FormatterCrash
 general/constants/js_semantics/number_folds_opt_out: FormatterCrash
+general/constants/js_semantics/number_folds: FormatterCrash
 general/constants/non_const_constructor: FormatterCrash
-general/constants/number_folds: FormatterCrash
 general/constants/number_folds_opt_out: FormatterCrash
-general/constants/various2: FormatterCrash
+general/constants/number_folds: FormatterCrash
 general/constants/various: FormatterCrash
+general/constants/various2: FormatterCrash
 general/constructor_initializer_invalid: FormatterCrash
-general/covariant_generic2: FormatterCrash
 general/duplicated_declarations: FormatterCrash
 general/enum_super_constructor: FormatterCrash
 general/error_recovery/annotations: FormatterCrash
@@ -85,9 +82,10 @@
 general/extension_types_feature_not_enabled: FormatterCrash
 general/function_type_default_value: FormatterCrash
 general/incomplete_field_formal_parameter: FormatterCrash
-general/invalid_operator2: FormatterCrash
 general/invalid_operator: FormatterCrash
+general/invalid_operator2: FormatterCrash
 general/invalid_super_initializer: FormatterCrash
+general/issue_46886: FormatterCrash
 general/issue41842: FormatterCrash
 general/issue42997: FormatterCrash
 general/issue43363: FormatterCrash
@@ -99,90 +97,35 @@
 general/issue48487: FormatterCrash
 general/issue48487b: FormatterCrash
 general/issue48919: FormatterCrash
-general/issue_46886: FormatterCrash
 general/macro_class: FormatterCrash
-general/many_errors2: FormatterCrash
 general/many_errors: FormatterCrash
+general/many_errors2: FormatterCrash
 general/missing_prefix_name: FormatterCrash
-general/mixin_inherited_setter_for_mixed_in_field2: FormatterCrash
 general/new_as_selector: FormatterCrash
 general/null_aware_super: FormatterCrash
-general/null_safety_invalid_experiment: FormatterCrash
 general/null_safety_invalid_experiment_and_language_version: FormatterCrash
-general/type_parameter_type_named_int: FormatterCrash
-general/type_parameter_usage_in_static_method_in_class: FormatterCrash
-general/type_parameter_usage_in_static_method_in_extension: FormatterCrash
+general/null_safety_invalid_experiment: FormatterCrash
 general/type_parameters_on_void: FormatterCrash
 general/type_variable_in_static_context: FormatterCrash
 general/var_as_type_name: FormatterCrash
 inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1: FormatterCrash
 inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1: FormatterCrash
-late_lowering/covariant_late_field: FormatterCrash
-late_lowering/getter_vs_setter_type: FormatterCrash
-late_lowering/infer_late_field_type: FormatterCrash
-late_lowering/initializer_rewrite: FormatterCrash
-late_lowering/initializer_rewrite_from_opt_out: FormatterCrash
-late_lowering/instance_field_with_initializer: FormatterCrash
-late_lowering/instance_field_without_initializer: FormatterCrash
-late_lowering/instance_final_field_without_initializer: FormatterCrash
-late_lowering/instance_nullable_field_with_initializer: FormatterCrash
-late_lowering/instance_nullable_field_without_initializer: FormatterCrash
-late_lowering/instance_nullable_final_field_without_initializer: FormatterCrash
-late_lowering/issue40373: FormatterCrash
-late_lowering/issue40373b: FormatterCrash
-late_lowering/issue40805: FormatterCrash
-late_lowering/issue41436b: FormatterCrash
-late_lowering/issue41922: FormatterCrash
-late_lowering/issue42407: FormatterCrash
-late_lowering/late_annotations: FormatterCrash
-late_lowering/late_field_inference: FormatterCrash
-late_lowering/late_field_with_initializer: FormatterCrash
-late_lowering/late_field_without_initializer: FormatterCrash
-late_lowering/late_final_field_with_initializer: FormatterCrash
-late_lowering/late_final_field_without_initializer: FormatterCrash
-late_lowering/late_final_nullable_field_with_initializer: FormatterCrash
-late_lowering/late_final_nullable_field_without_initializer: FormatterCrash
-late_lowering/late_future_or: FormatterCrash
-late_lowering/late_lowering_bitmasks: FormatterCrash
-late_lowering/late_nullable_field_with_initializer: FormatterCrash
-late_lowering/late_nullable_field_without_initializer: FormatterCrash
-late_lowering/late_override: FormatterCrash
 late_lowering/later: FormatterCrash
-late_lowering/override: FormatterCrash
-late_lowering/override_getter_setter: FormatterCrash
-late_lowering/skip_late_final_uninitialized_instance_fields/main: FormatterCrash
-late_lowering/uninitialized_non_nullable_late_fields: FormatterCrash
 macros/augment_class: FormatterCrash
 macros/augment_super: FormatterCrash
 macros/class_members: FormatterCrash
 macros/inject_constructor: FormatterCrash
 macros/macro_class: FormatterCrash
 macros/multiple_imports: FormatterCrash
-nnbd/abstract_field_errors: FormatterCrash
-nnbd/covariant_late_field: FormatterCrash
-nnbd/duplicates_instance: FormatterCrash
-nnbd/duplicates_instance_extension: FormatterCrash
-nnbd/duplicates_static: FormatterCrash
-nnbd/duplicates_static_extension: FormatterCrash
-nnbd/field_vs_setter: FormatterCrash
-nnbd/forbidden_supers: FormatterCrash
-nnbd/getter_vs_setter_type_late: FormatterCrash
-nnbd/issue40805: FormatterCrash
-nnbd/issue41597: FormatterCrash
-nnbd/issue42967: FormatterCrash
-nnbd/issue43354: FormatterCrash
-nnbd/late: FormatterCrash
-nnbd/later: FormatterCrash
-nnbd/no_null_shorting_explicit_extension: FormatterCrash
-nnbd/no_null_shorting_extension: FormatterCrash
-nnbd/non_nullable_field_initialization: FormatterCrash
-nnbd/nonfield_vs_setter: FormatterCrash
-nnbd/opt_out: FormatterCrash
-nnbd/potentially_non_nullable_field: FormatterCrash
-nnbd/uninitialized_non_nullable_late_fields: FormatterCrash
 nnbd_mixed/inheritance_from_opt_in: FormatterCrash
 nnbd_mixed/issue41597: FormatterCrash
 nnbd_mixed/null_safety_invalid_language_version: FormatterCrash
+nnbd/abstract_field_errors: FormatterCrash
+nnbd/duplicates_instance_extension: FormatterCrash
+nnbd/field_vs_setter: FormatterCrash
+nnbd/forbidden_supers: FormatterCrash
+nnbd/later: FormatterCrash
+nnbd/nonfield_vs_setter: FormatterCrash
 nonfunction_type_aliases/old_version: FormatterCrash
 rasta/bad_redirection: FormatterCrash
 rasta/issue_000032: FormatterCrash
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.textual_outline.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.textual_outline.expect
index 7faa576..d614446 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.textual_outline.expect
@@ -1,22 +1,22 @@
 class Operators1 {
-  operator >>> () => true;
+  operator >>>() => true;
 }
 class Operators2 {
-  operator >>> (a, b) => true;
+  operator >>>(a, b) => true;
 }
 class Operators3 {
-  operator >>> ([a]) => true;
+  operator >>>([a]) => true;
 }
 class Operators4 {
-  operator >>> ({a}) => true;
+  operator >>>({a}) => true;
 }
 class Operators5 {
-  operator >>> (a, [b]) => true;
+  operator >>>(a, [b]) => true;
 }
 class Operators6 {
-  operator >>> (a, {b}) => true;
+  operator >>>(a, {b}) => true;
 }
 class Operators7 {
-  operator >>> <T>(a) => true;
+  operator >>><T>(a) => true;
 }
 main() {}
diff --git a/tools/VERSION b/tools/VERSION
index 5447454..05a2446 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 211
+PRERELEASE 212
 PRERELEASE_PATCH 0
\ No newline at end of file