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
