Version 2.14.0-133.0.dev

Merge commit '5051d4b99167c8188903b7c8f29e196b0d160410' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9a9d3ac..9b818c8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,12 @@
     daylight saving changes that are not precisely one hour.
     (No change on the Web which uses the JavaScript `Date` object.)
 
+#### `dart:io`
+
+*   BREAKING CHANGE (for pre-migrated null safe code):
+    `HttpClient`'s `.authenticate`  and `.authenticateProxy` setter callbacks
+    must now accept a nullable `realm` argument.
+
 #### `dart:typed_data`
 
 *   **BREAKING CHANGE** (https://github.com/dart-lang/sdk/issues/45115)
diff --git a/DEPS b/DEPS
index 4c1a614..cfd9878 100644
--- a/DEPS
+++ b/DEPS
@@ -44,7 +44,7 @@
   # co19 is a cipd package. Use update.sh in tests/co19[_2] to update these
   # hashes. It requires access to the dart-build-access group, which EngProd
   # has.
-  "co19_rev": "055b5c984613ec1b8ef76516db3ea99fee63acb9",
+  "co19_rev": "26019f5b2efb294eacddfef6ce443083979feff5",
   "co19_2_rev": "1c2e425f461bfae7de6db7014fc44a58fc72b4a8",
 
   # The internal benchmarks to use. See go/dart-benchmarks-internal
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
index b094b2bf..652a879 100644
--- a/build/toolchain/win/tool_wrapper.py
+++ b/build/toolchain/win/tool_wrapper.py
@@ -225,7 +225,7 @@
         env = self._GetEnv(arch)
         # TODO(scottmg): This is a temporary hack to get some specific variables
         # through to actions that are set after GN-time. http://crbug.com/333738.
-        for k, v in os.environ.iteritems():
+        for k, v in os.environ.items():
             if k not in env:
                 env[k] = v
         args = open(rspfile).read()
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
index 1cba6ec..e748921 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -10,7 +10,7 @@
 import 'package:analysis_server/lsp_protocol/protocol_generated.dart'
     show SemanticTokenTypes, SemanticTokenModifiers;
 import 'package:analysis_server/src/lsp/constants.dart'
-    show CustomSemanticTokenModifiers;
+    show CustomSemanticTokenModifiers, CustomSemanticTokenTypes;
 import 'package:analysis_server/src/lsp/semantic_tokens/encoder.dart'
     show SemanticTokenInfo;
 import 'package:analysis_server/src/lsp/semantic_tokens/mapping.dart'
@@ -819,6 +819,31 @@
   }
 
   @override
+  void visitInterpolationExpression(InterpolationExpression node) {
+    if (computer._computeSemanticTokens) {
+      // Interpolation expressions may include uncolored code, but clients may
+      // be providing their own basic coloring for strings that would leak
+      // into those uncolored parts so we mark them up to allow the client to
+      // reset the coloring if required.
+      //
+      // Using the String token type with a modifier would work for VS Code but
+      // would cause other editors that don't know about the modifier (and also
+      // do not have their own local coloring) to color the tokens as a string,
+      // which is exactly what we'd like to avoid).
+
+      computer._addRegion_node(
+        node,
+        // The HighlightRegionType here is not used because of the
+        // computer._computeSemanticTokens check above.
+        HighlightRegionType.LITERAL_STRING,
+        semanticTokenType: CustomSemanticTokenTypes.source,
+        semanticTokenModifiers: {CustomSemanticTokenModifiers.interpolation},
+      );
+    }
+    super.visitInterpolationExpression(node);
+  }
+
+  @override
   void visitInterpolationString(InterpolationString node) {
     computer._addRegion_node(node, HighlightRegionType.LITERAL_STRING);
     super.visitInterpolationString(node);
diff --git a/pkg/analysis_server/lib/src/lsp/constants.dart b/pkg/analysis_server/lib/src/lsp/constants.dart
index 02479bd..d13b6a8 100644
--- a/pkg/analysis_server/lib/src/lsp/constants.dart
+++ b/pkg/analysis_server/lib/src/lsp/constants.dart
@@ -91,7 +91,7 @@
 
 abstract class CustomSemanticTokenModifiers {
   /// A modifier applied to control keywords like if/for/etc. so they can be
-  /// coloured differently to other keywords (void, import, etc), matching the
+  /// colored differently to other keywords (void, import, etc), matching the
   /// original Dart textmate grammar.
   /// https://github.com/dart-lang/dart-syntax-highlight/blob/84a8e84f79bc917ebd959a4587349c865dc945e0/grammars/dart.json#L244-L261
   static const control = SemanticTokenModifiers('control');
@@ -104,26 +104,52 @@
   /// - parameter
   static const label = SemanticTokenModifiers('label');
 
-  /// A modifier applied to constructors to allow colouring them differently
+  /// A modifier applied to constructors to allow coloring them differently
   /// to class names that are not constructors.
   static const constructor = SemanticTokenModifiers('constructor');
 
-  /// A modifier applied to escape characters within a string to allow colouring
+  /// A modifier applied to escape characters within a string to allow coloring
   /// them differently.
   static const escape = SemanticTokenModifiers('escape');
 
-  /// All custom semantic token modifiers, used to populate the LSP Legend which must
-  /// include all used modifiers.
-  static const values = [control, label, constructor];
+  /// A modifier applied to an interpolation expression in a string to allow
+  /// coloring it differently to the literal parts of the string.
+  ///
+  /// Many tokens within interpolation expressions will get their own semantic
+  /// tokens so this is mainly to account for the the surrounding `${}` and
+  /// tokens like parens and operators that may not get their own.
+  ///
+  /// This is useful for editors that supply their own basic coloring initially
+  /// (for faster coloring) and then layer semantic tokens over the top. Without
+  /// some marker for interpolation expressions, all otherwise-uncolored parts
+  /// of the expression would show through the simple-colorings "string" colors.
+  static const interpolation = SemanticTokenModifiers('interpolation');
+
+  /// All custom semantic token modifiers, used to populate the LSP Legend.
+  ///
+  /// The legend must include all used modifiers. Modifiers used in the
+  /// HighlightRegion mappings will be automatically included, but should still
+  /// be listed here in case they are removed from mappings in the future.
+  static const values = [control, label, constructor, escape, interpolation];
 }
 
 abstract class CustomSemanticTokenTypes {
   static const annotation = SemanticTokenTypes('annotation');
   static const boolean = SemanticTokenTypes('boolean');
 
+  /// A placeholder token type for basic source code that is not usually colored.
+  ///
+  /// This is used only where clients might otherwise provide their own coloring
+  /// (for example coloring whole strings that may include interpolated code).
+  ///
+  /// Tokens using this type should generally also provide a custom
+  /// [CustomSemanticTokenModifiers] to give the client more information about
+  /// the reason for this token and allow specific coloring if desired.
+  static const source = SemanticTokenTypes('source');
+
   /// All custom semantic token types, used to populate the LSP Legend which must
   /// include all used types.
-  static const values = [annotation, boolean];
+  static const values = [annotation, boolean, source];
 }
 
 /// CodeActionKinds supported by the server that are not declared in the LSP spec.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart
index 407685f..c88cbcf 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart
@@ -57,7 +57,9 @@
     }
 
     var widgetName = widgetClassElement.displayName;
-    var stateName = '_${widgetName}State';
+    var stateName = widgetClassElement.isPrivate
+        ? '${widgetName}State'
+        : '_${widgetName}State';
 
     // Find fields assigned in constructors.
     var visitor = _FieldFinder();
diff --git a/pkg/analysis_server/test/lsp/semantic_tokens_test.dart b/pkg/analysis_server/test/lsp/semantic_tokens_test.dart
index 107872f..a966f00 100644
--- a/pkg/analysis_server/test/lsp/semantic_tokens_test.dart
+++ b/pkg/analysis_server/test/lsp/semantic_tokens_test.dart
@@ -465,7 +465,7 @@
 
   Future<void> test_keywords() async {
     // "control" keywords should be tagged with a modifier so the client
-    // can colour them differently to other keywords.
+    // can color them differently to other keywords.
     final content = r'''
     void main() async {
       var a = new Object();
@@ -804,7 +804,7 @@
     final content = '''
 String foo(String c) => c;
 const string1 = 'test';
-const string2 = 'test1 \$string1 test2 \${foo('test3')}';
+const string2 = 'test1 \$string1 test2 \${foo('a' + 'b')}';
 const string3 = r'\$string1 \${string1.length}';
 const string4 = \'\'\'
 multi
@@ -821,25 +821,40 @@
       _Token('c', SemanticTokenTypes.parameter,
           [SemanticTokenModifiers.declaration]),
       _Token('c', SemanticTokenTypes.parameter),
+
       _Token('const', SemanticTokenTypes.keyword),
       _Token('string1', SemanticTokenTypes.variable,
           [SemanticTokenModifiers.declaration]),
       _Token("'test'", SemanticTokenTypes.string),
+
       _Token('const', SemanticTokenTypes.keyword),
       _Token('string2', SemanticTokenTypes.variable,
           [SemanticTokenModifiers.declaration]),
       _Token(r"'test1 ", SemanticTokenTypes.string),
+      _Token(r'$', CustomSemanticTokenTypes.source,
+          [CustomSemanticTokenModifiers.interpolation]),
       _Token('string1', SemanticTokenTypes.property),
       _Token(' test2 ', SemanticTokenTypes.string),
+      _Token(r'${', CustomSemanticTokenTypes.source,
+          [CustomSemanticTokenModifiers.interpolation]),
       _Token('foo', SemanticTokenTypes.function),
-      _Token("'test3'", SemanticTokenTypes.string),
+      _Token('(', CustomSemanticTokenTypes.source,
+          [CustomSemanticTokenModifiers.interpolation]),
+      _Token("'a'", SemanticTokenTypes.string),
+      _Token(' + ', CustomSemanticTokenTypes.source,
+          [CustomSemanticTokenModifiers.interpolation]),
+      _Token("'b'", SemanticTokenTypes.string),
+      _Token(')}', CustomSemanticTokenTypes.source,
+          [CustomSemanticTokenModifiers.interpolation]),
       _Token("'", SemanticTokenTypes.string),
-      _Token('const', SemanticTokenTypes.keyword),
+
       // string3 is raw and should be treated as a single string.
+      _Token('const', SemanticTokenTypes.keyword),
       _Token('string3', SemanticTokenTypes.variable,
           [SemanticTokenModifiers.declaration]),
       _Token(r"r'$string1 ${string1.length}'", SemanticTokenTypes.string),
       _Token('const', SemanticTokenTypes.keyword),
+
       _Token('string4', SemanticTokenTypes.variable,
           [SemanticTokenModifiers.declaration]),
       _Token("'''\n", SemanticTokenTypes.string),
diff --git a/pkg/analysis_server/test/src/services/correction/assist/flutter_convert_to_stateful_widget_test.dart b/pkg/analysis_server/test/src/services/correction/assist/flutter_convert_to_stateful_widget_test.dart
index 85126d4..036db53 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/flutter_convert_to_stateful_widget_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/flutter_convert_to_stateful_widget_test.dart
@@ -310,6 +310,34 @@
 ''');
   }
 
+  Future<void> test_noExtraUnderscore() async {
+    await resolveTestCode(r'''
+import 'package:flutter/material.dart';
+
+class /*caret*/_MyWidget extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return Container();
+  }
+}
+''');
+    await assertHasAssist(r'''
+import 'package:flutter/material.dart';
+
+class _MyWidget extends StatefulWidget {
+  @override
+  State<_MyWidget> createState() => _MyWidgetState();
+}
+
+class _MyWidgetState extends State<_MyWidget> {
+  @override
+  Widget build(BuildContext context) {
+    return Container();
+  }
+}
+''');
+  }
+
   Future<void> test_notClass() async {
     await resolveTestCode('''
 import 'package:flutter/material.dart';
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index daea242..b286788 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -80,7 +80,7 @@
 /// TODO(scheglov) Clean up the list of implicitly analyzed files.
 class AnalysisDriver implements AnalysisDriverGeneric {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 138;
+  static const int DATA_VERSION = 139;
 
   /// The length of the list returned by [_computeDeclaredVariablesSignature].
   static const int _declaredVariablesSignatureLength = 4;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 2d9f7ff..5db427d 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1865,10 +1865,6 @@
   /// [nameOffset].
   DefaultFieldFormalParameterElementImpl(String name, int nameOffset)
       : super(name, nameOffset);
-
-  DefaultFieldFormalParameterElementImpl.forLinkedNode(ElementImpl enclosing,
-      Reference? reference, FormalParameterImpl linkedNode)
-      : super.forLinkedNode(enclosing, reference, linkedNode);
 }
 
 /// A [ParameterElement] for parameters that have an initializer.
@@ -1879,10 +1875,6 @@
   DefaultParameterElementImpl(String? name, int nameOffset)
       : super(name, nameOffset);
 
-  DefaultParameterElementImpl.forLinkedNode(ElementImpl enclosing,
-      Reference? reference, FormalParameterImpl linkedNode)
-      : super.forLinkedNode(enclosing, reference, linkedNode);
-
   @override
   String? get defaultValueCode {
     var ast = constantInitializer;
@@ -3050,7 +3042,7 @@
     implements ExecutableElement, ElementImplWithFunctionType {
   /// A list containing all of the parameters defined by this executable
   /// element.
-  List<ParameterElement> _parameters = _Sentinel.parameterElement;
+  List<ParameterElement> _parameters = const [];
 
   /// The inferred return type of this executable element.
   DartType? _returnType;
@@ -3535,45 +3527,14 @@
 /// [FieldElement] associated with the parameter.
 class FieldFormalParameterElementImpl extends ParameterElementImpl
     implements FieldFormalParameterElement {
-  /// The field associated with this field formal parameter.
-  FieldElement? _field;
+  @override
+  FieldElement? field;
 
   /// Initialize a newly created parameter element to have the given [name] and
   /// [nameOffset].
   FieldFormalParameterElementImpl(String name, int nameOffset)
       : super(name, nameOffset);
 
-  FieldFormalParameterElementImpl.forLinkedNode(ElementImpl enclosing,
-      Reference? reference, FormalParameterImpl linkedNode)
-      : super.forLinkedNode(enclosing, reference, linkedNode);
-
-  @override
-  FieldElement? get field {
-    if (_field == null) {
-      String? fieldName;
-      if (linkedNode != null) {
-        fieldName = linkedContext!.getFieldFormalParameterName(linkedNode!);
-      }
-      if (fieldName != null) {
-        Element enclosingConstructor = enclosingElement!;
-        if (enclosingConstructor is ConstructorElement) {
-          Element enclosingClass = enclosingConstructor.enclosingElement;
-          if (enclosingClass is ClassElement) {
-            var field = enclosingClass.getField(fieldName);
-            if (field != null && !field.isSynthetic) {
-              _field = field;
-            }
-          }
-        }
-      }
-    }
-    return _field;
-  }
-
-  set field(FieldElement? field) {
-    _field = field;
-  }
-
   /// Initializing formals are visible only in the "formal parameter
   /// initializer scope", which is the current scope of the initializer list
   /// of the constructor, and which is enclosed in the scope where the
@@ -5070,12 +5031,12 @@
   /// A list containing all of the parameters defined by this parameter element.
   /// There will only be parameters if this parameter is a function typed
   /// parameter.
-  List<ParameterElement> _parameters = _Sentinel.parameterElement;
+  List<ParameterElement> _parameters = const [];
 
   /// A list containing all of the type parameters defined for this parameter
   /// element. There will only be parameters if this parameter is a function
   /// typed parameter.
-  List<TypeParameterElement> _typeParameters = _Sentinel.typeParameterElement;
+  List<TypeParameterElement> _typeParameters = const [];
 
   /// The kind of this parameter.
   ParameterKind? _parameterKind;
@@ -5092,29 +5053,6 @@
   /// [nameOffset].
   ParameterElementImpl(String? name, int nameOffset) : super(name, nameOffset);
 
-  ParameterElementImpl.forLinkedNode(ElementImpl enclosing,
-      Reference? reference, FormalParameterImpl linkedNode)
-      : super.forLinkedNode(enclosing, reference, linkedNode) {
-    assert(linkedNode.isNamed || reference == null);
-    FormalParameterImpl.setDeclaredElement(linkedNode, this);
-  }
-
-  factory ParameterElementImpl.forLinkedNodeFactory(
-      ElementImpl enclosing, Reference? reference, FormalParameterImpl node) {
-    if (node is FieldFormalParameter) {
-      return FieldFormalParameterElementImpl.forLinkedNode(
-        enclosing,
-        reference,
-        node,
-      );
-    } else if (node is FunctionTypedFormalParameter ||
-        node is SimpleFormalParameter) {
-      return ParameterElementImpl.forLinkedNode(enclosing, reference, node);
-    } else {
-      throw UnimplementedError('${node.runtimeType}');
-    }
-  }
-
   /// Creates a synthetic parameter with [name], [type] and [kind].
   factory ParameterElementImpl.synthetic(
       String? name, DartType type, ParameterKind kind) {
@@ -5130,11 +5068,6 @@
 
   @override
   String? get defaultValueCode {
-    final linkedNode = this.linkedNode;
-    if (linkedNode is DefaultFormalParameter) {
-      return linkedNode.defaultValue?.toSource();
-    }
-
     return _defaultValueCode;
   }
 
@@ -5151,14 +5084,6 @@
   }
 
   @override
-  bool get hasImplicitType {
-    if (linkedNode != null) {
-      return linkedContext!.hasImplicitType(linkedNode!);
-    }
-    return super.hasImplicitType;
-  }
-
-  @override
   bool get isCovariant {
     if (isExplicitlyCovariant || inheritsCovariant) {
       return true;
@@ -5168,9 +5093,6 @@
 
   /// Return true if this parameter is explicitly marked as being covariant.
   bool get isExplicitlyCovariant {
-    if (linkedNode != null) {
-      return linkedContext!.isExplicitlyCovariant(linkedNode!);
-    }
     return hasModifier(Modifier.COVARIANT);
   }
 
@@ -5181,15 +5103,6 @@
   }
 
   @override
-  bool get isFinal {
-    if (linkedNode != null) {
-      final linkedNode = this.linkedNode as FormalParameter;
-      return linkedNode.isFinal;
-    }
-    return super.isFinal;
-  }
-
-  @override
   bool get isInitializingFormal => false;
 
   @override
@@ -5199,32 +5112,9 @@
   ElementKind get kind => ElementKind.PARAMETER;
 
   @override
-  String get name {
-    if (linkedNode != null) {
-      return linkedContext!
-          .getFormalParameterName(linkedNode as FormalParameter);
-    }
-    return super.name;
-  }
-
-  @override
-  int get nameOffset {
-    if (linkedNode != null) {
-      return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
-    }
-
-    return super.nameOffset;
-  }
-
-  @override
   ParameterKind get parameterKind {
     if (_parameterKind != null) return _parameterKind!;
 
-    if (linkedNode != null) {
-      final linkedNode = this.linkedNode as FormalParameterImpl;
-      return linkedNode.kind;
-    }
-
     // TODO(migration): Make it impossible by construction.
     throw StateError('The kind must set.');
   }
@@ -5235,25 +5125,6 @@
 
   @override
   List<ParameterElement> get parameters {
-    if (!identical(_parameters, _Sentinel.parameterElement)) {
-      return _parameters;
-    }
-
-    if (linkedNode != null) {
-      var context = enclosingUnit.linkedContext!;
-      var formalParameters = context.getFormalParameters(linkedNode!);
-      if (formalParameters != null) {
-        return _parameters = ParameterElementImpl.forLinkedNodeList(
-          this,
-          context,
-          null,
-          formalParameters,
-        );
-      } else {
-        return _parameters;
-      }
-    }
-
     return _parameters;
   }
 
@@ -5268,24 +5139,6 @@
 
   @override
   List<TypeParameterElement> get typeParameters {
-    if (!identical(_typeParameters, _Sentinel.typeParameterElement)) {
-      return _typeParameters;
-    }
-
-    if (linkedNode != null) {
-      var typeParameters = linkedContext!.getTypeParameters2(linkedNode!);
-      if (typeParameters == null) {
-        return _typeParameters = const [];
-      }
-      return _typeParameters = typeParameters.typeParameters
-          .cast<TypeParameterImpl>()
-          .map<TypeParameterElement>((node) {
-        var element = node.declaredElement;
-        element ??= TypeParameterElementImpl.forLinkedNode(this, node);
-        return element;
-      }).toList();
-    }
-
     return _typeParameters;
   }
 
@@ -5312,52 +5165,6 @@
     super.visitChildren(visitor);
     safelyVisitChildren(parameters, visitor);
   }
-
-  /// TODO(scheglov) Do we need this method at all?
-  /// We should create all parameter elements during applying resolution.
-  /// Or when we build elements before linking.
-  static List<ParameterElement> forLinkedNodeList(
-      ElementImpl enclosing,
-      LinkedUnitContext context,
-      Reference? containerRef,
-      List<FormalParameter>? formalParameters) {
-    if (formalParameters == null) {
-      return const [];
-    }
-
-    return formalParameters.map((node) {
-      var element = node.declaredElement;
-      if (element != null) {
-        return element;
-      }
-
-      if (node is DefaultFormalParameterImpl) {
-        NormalFormalParameter parameterNode = node.parameter;
-        Reference? reference;
-        if (node.isNamed) {
-          var name = parameterNode.identifier?.name ?? '';
-          reference = containerRef?.getChild(name);
-          reference?.node = node;
-        }
-        if (parameterNode is FieldFormalParameter) {
-          return DefaultFieldFormalParameterElementImpl.forLinkedNode(
-            enclosing,
-            reference,
-            node,
-          );
-        } else {
-          return DefaultParameterElementImpl.forLinkedNode(
-            enclosing,
-            reference,
-            node,
-          );
-        }
-      } else {
-        return ParameterElementImpl.forLinkedNodeFactory(
-            enclosing, null, node as FormalParameterImpl);
-      }
-    }).toList();
-  }
 }
 
 /// The parameter of an implicit setter.
@@ -5709,7 +5516,7 @@
 
   @override
   List<ParameterElement> get parametersInternal {
-    if (!identical(_parameters, _Sentinel.parameterElement)) {
+    if (_parameters.isNotEmpty) {
       return _parameters;
     }
 
@@ -6374,16 +6181,7 @@
 
   /// Initialize a newly created variable element to have the given [name] and
   /// [offset].
-  VariableElementImpl(String? name, int offset, {Reference? reference})
-      : super(name, offset, reference: reference);
-
-  VariableElementImpl.forLinkedNode(
-      ElementImpl enclosing, Reference? reference, AstNode linkedNode)
-      : super.forLinkedNode(enclosing, reference, linkedNode);
-
-  /// Initialize using the given serialized information.
-  VariableElementImpl.forSerialized(ElementImpl enclosingElement)
-      : super.forSerialized(enclosingElement);
+  VariableElementImpl(String? name, int offset) : super(name, offset);
 
   /// If this element represents a constant variable, and it has an initializer,
   /// a copy of the initializer for the constant.  Otherwise `null`.
@@ -6535,7 +6333,6 @@
   static final List<ImportElement> importElement = List.unmodifiable([]);
   static final List<InterfaceType> interfaceType = List.unmodifiable([]);
   static final List<MethodElement> methodElement = List.unmodifiable([]);
-  static final List<ParameterElement> parameterElement = List.unmodifiable([]);
   static final List<PropertyAccessorElement> propertyAccessorElement =
       List.unmodifiable([]);
   static final List<TypeAliasElement> typeAliasElement = List.unmodifiable([]);
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index 9304693..b03f8b8 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -1584,6 +1584,8 @@
     } else if (target is FunctionTypeAlias || target is GenericTypeAlias) {
       return kinds.contains(TargetKind.typedefType) ||
           kinds.contains(TargetKind.type);
+    } else if (target is TopLevelVariableDeclaration) {
+      return kinds.contains(TargetKind.topLevelVariable);
     }
     return false;
   }
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index 422e337..ca2d949 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -1535,6 +1535,7 @@
     return List.generate(formalParameterCount, (_) {
       var kindIndex = _reader.readByte();
       var kind = _formalParameterKind(kindIndex);
+      var hasImplicitType = _reader.readBool();
       var isInitializingFormal = _reader.readBool();
       var typeParameters = _readTypeParameters(unitElement);
       var type = readRequiredType();
@@ -1550,6 +1551,7 @@
             ..parameterKind = kind
             ..type = type;
         }
+        element.hasImplicitType = hasImplicitType;
         element.typeParameters = typeParameters;
         element.parameters = _readFormalParameters(unitElement);
         // TODO(scheglov) reuse for formal parameters
@@ -1562,6 +1564,7 @@
         var element = DefaultParameterElementImpl(name, -1)
           ..parameterKind = kind
           ..type = type;
+        element.hasImplicitType = hasImplicitType;
         element.typeParameters = typeParameters;
         element.parameters = _readFormalParameters(unitElement);
         // TODO(scheglov) reuse for formal parameters
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index 9dc8c56..e6ca6ed 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -657,6 +657,7 @@
     writeUInt30(parameters.length);
     for (var parameter in parameters) {
       _writeFormalParameterKind(parameter);
+      writeBool(parameter.hasImplicitType);
       writeBool(parameter.isInitializingFormal);
       _writeTypeParameters(parameter.typeParameters, () {
         writeType(parameter.type);
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart
index 1ca267c..2bf9161 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart
@@ -606,6 +606,40 @@
 ''');
   }
 
+  void test_topLevelVariable_field() async {
+    writeTestPackageConfigWithMeta();
+    await assertErrorsInCode('''
+import 'package:meta/meta_meta.dart';
+
+@Target({TargetKind.topLevelVariable})
+class A {
+  const A();
+}
+
+class B {
+  @A()
+  int f = 0;
+}
+''', [
+      error(HintCode.INVALID_ANNOTATION_TARGET, 117, 1),
+    ]);
+  }
+
+  void test_topLevelVariable_topLevelVariable() async {
+    writeTestPackageConfigWithMeta();
+    await assertNoErrorsInCode('''
+import 'package:meta/meta_meta.dart';
+
+@Target({TargetKind.topLevelVariable})
+class A {
+  const A();
+}
+
+@A()
+int f = 0;
+''');
+  }
+
   void test_type_class() async {
     writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index ef090f9..925dec6 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -14560,6 +14560,19 @@
 ''');
   }
 
+  test_typedef_parameter_hasImplicitType() async {
+    var library = await checkLibrary(r'''
+typedef void F(int a, b, [int c, d]);
+''');
+    var F = library.definingCompilationUnit.typeAliases.single;
+    var function = F.aliasedElement as GenericFunctionTypeElement;
+    // TODO(scheglov) Use better textual presentation with all information.
+    expect(function.parameters[0].hasImplicitType, false);
+    expect(function.parameters[1].hasImplicitType, true);
+    expect(function.parameters[2].hasImplicitType, false);
+    expect(function.parameters[3].hasImplicitType, true);
+  }
+
   test_typedef_parameter_parameters() async {
     var library = await checkLibrary('typedef F(g(x, y));');
     checkElementText(library, r'''
diff --git a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
index fe06b76..1424749 100644
--- a/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/direct_parser_ast_helper.dart
@@ -2,8 +2,6 @@
 // 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.
 
-// @dart = 2.9
-
 import 'package:_fe_analyzer_shared/src/parser/assert.dart';
 import 'package:_fe_analyzer_shared/src/parser/block_kind.dart';
 import 'package:_fe_analyzer_shared/src/parser/declaration_kind.dart';
@@ -29,8 +27,8 @@
 abstract class DirectParserASTContent {
   final String what;
   final DirectParserASTType type;
-  Map<String, Object> get deprecatedArguments;
-  List<DirectParserASTContent> children;
+  Map<String, Object?> get deprecatedArguments;
+  List<DirectParserASTContent>? children;
 
   DirectParserASTContent(this.what, this.type);
 
@@ -58,7 +56,7 @@
     seen(data);
   }
 
-  void handleAsyncModifier(Token asyncToken, Token starToken) {
+  void handleAsyncModifier(Token? asyncToken, Token? starToken) {
     DirectParserASTContentAsyncModifierHandle data =
         new DirectParserASTContentAsyncModifierHandle(
             DirectParserASTType.HANDLE,
@@ -174,7 +172,7 @@
     seen(data);
   }
 
-  void beginClassDeclaration(Token begin, Token abstractToken, Token name) {
+  void beginClassDeclaration(Token begin, Token? abstractToken, Token name) {
     DirectParserASTContentClassDeclarationBegin data =
         new DirectParserASTContentClassDeclarationBegin(
             DirectParserASTType.BEGIN,
@@ -184,7 +182,7 @@
     seen(data);
   }
 
-  void handleClassExtends(Token extendsKeyword, int typeCount) {
+  void handleClassExtends(Token? extendsKeyword, int typeCount) {
     DirectParserASTContentClassExtendsHandle data =
         new DirectParserASTContentClassExtendsHandle(DirectParserASTType.HANDLE,
             extendsKeyword: extendsKeyword, typeCount: typeCount);
@@ -192,7 +190,7 @@
   }
 
   void handleClassOrMixinImplements(
-      Token implementsKeyword, int interfacesCount) {
+      Token? implementsKeyword, int interfacesCount) {
     DirectParserASTContentClassOrMixinImplementsHandle data =
         new DirectParserASTContentClassOrMixinImplementsHandle(
             DirectParserASTType.HANDLE,
@@ -201,7 +199,7 @@
     seen(data);
   }
 
-  void handleClassHeader(Token begin, Token classKeyword, Token nativeToken) {
+  void handleClassHeader(Token begin, Token classKeyword, Token? nativeToken) {
     DirectParserASTContentClassHeaderHandle data =
         new DirectParserASTContentClassHeaderHandle(DirectParserASTType.HANDLE,
             begin: begin, classKeyword: classKeyword, nativeToken: nativeToken);
@@ -231,7 +229,7 @@
     seen(data);
   }
 
-  void handleMixinOn(Token onKeyword, int typeCount) {
+  void handleMixinOn(Token? onKeyword, int typeCount) {
     DirectParserASTContentMixinOnHandle data =
         new DirectParserASTContentMixinOnHandle(DirectParserASTType.HANDLE,
             onKeyword: onKeyword, typeCount: typeCount);
@@ -275,7 +273,7 @@
     seen(data);
   }
 
-  void beginExtensionDeclaration(Token extensionKeyword, Token name) {
+  void beginExtensionDeclaration(Token extensionKeyword, Token? name) {
     DirectParserASTContentExtensionDeclarationBegin data =
         new DirectParserASTContentExtensionDeclarationBegin(
             DirectParserASTType.BEGIN,
@@ -354,7 +352,7 @@
   }
 
   void endConstructorReference(
-      Token start, Token periodBeforeName, Token endToken) {
+      Token start, Token? periodBeforeName, Token endToken) {
     DirectParserASTContentConstructorReferenceEnd data =
         new DirectParserASTContentConstructorReferenceEnd(
             DirectParserASTType.END,
@@ -462,7 +460,7 @@
   }
 
   void beginFactoryMethod(
-      Token lastConsumed, Token externalToken, Token constToken) {
+      Token lastConsumed, Token? externalToken, Token? constToken) {
     DirectParserASTContentFactoryMethodBegin data =
         new DirectParserASTContentFactoryMethodBegin(DirectParserASTType.BEGIN,
             lastConsumed: lastConsumed,
@@ -502,8 +500,8 @@
     seen(data);
   }
 
-  void beginFormalParameter(Token token, MemberKind kind, Token requiredToken,
-      Token covariantToken, Token varFinalOrConst) {
+  void beginFormalParameter(Token token, MemberKind kind, Token? requiredToken,
+      Token? covariantToken, Token? varFinalOrConst) {
     DirectParserASTContentFormalParameterBegin data =
         new DirectParserASTContentFormalParameterBegin(
             DirectParserASTType.BEGIN,
@@ -516,11 +514,11 @@
   }
 
   void endFormalParameter(
-      Token thisKeyword,
-      Token periodAfterThis,
+      Token? thisKeyword,
+      Token? periodAfterThis,
       Token nameToken,
-      Token initializerStart,
-      Token initializerEnd,
+      Token? initializerStart,
+      Token? initializerEnd,
       FormalParameterKind kind,
       MemberKind memberKind) {
     DirectParserASTContentFormalParameterEnd data =
@@ -565,12 +563,12 @@
   }
 
   void endClassFields(
-      Token abstractToken,
-      Token externalToken,
-      Token staticToken,
-      Token covariantToken,
-      Token lateToken,
-      Token varFinalOrConst,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
       int count,
       Token beginToken,
       Token endToken) {
@@ -589,12 +587,12 @@
   }
 
   void endMixinFields(
-      Token abstractToken,
-      Token externalToken,
-      Token staticToken,
-      Token covariantToken,
-      Token lateToken,
-      Token varFinalOrConst,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
       int count,
       Token beginToken,
       Token endToken) {
@@ -613,12 +611,12 @@
   }
 
   void endExtensionFields(
-      Token abstractToken,
-      Token externalToken,
-      Token staticToken,
-      Token covariantToken,
-      Token lateToken,
-      Token varFinalOrConst,
+      Token? abstractToken,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
       int count,
       Token beginToken,
       Token endToken) {
@@ -702,7 +700,7 @@
     seen(data);
   }
 
-  void handleForInLoopParts(Token awaitToken, Token forToken,
+  void handleForInLoopParts(Token? awaitToken, Token forToken,
       Token leftParenthesis, Token inKeyword) {
     DirectParserASTContentForInLoopPartsHandle data =
         new DirectParserASTContentForInLoopPartsHandle(
@@ -837,7 +835,7 @@
   }
 
   void endFunctionTypeAlias(
-      Token typedefKeyword, Token equals, Token endToken) {
+      Token typedefKeyword, Token? equals, Token endToken) {
     DirectParserASTContentFunctionTypeAliasEnd data =
         new DirectParserASTContentFunctionTypeAliasEnd(DirectParserASTType.END,
             typedefKeyword: typedefKeyword, equals: equals, endToken: endToken);
@@ -860,7 +858,7 @@
   }
 
   void beginNamedMixinApplication(
-      Token begin, Token abstractToken, Token name) {
+      Token begin, Token? abstractToken, Token name) {
     DirectParserASTContentNamedMixinApplicationBegin data =
         new DirectParserASTContentNamedMixinApplicationBegin(
             DirectParserASTType.BEGIN,
@@ -879,7 +877,7 @@
   }
 
   void endNamedMixinApplication(Token begin, Token classKeyword, Token equals,
-      Token implementsKeyword, Token endToken) {
+      Token? implementsKeyword, Token endToken) {
     DirectParserASTContentNamedMixinApplicationEnd data =
         new DirectParserASTContentNamedMixinApplicationEnd(
             DirectParserASTType.END,
@@ -934,7 +932,7 @@
     seen(data);
   }
 
-  void endIfStatement(Token ifToken, Token elseToken) {
+  void endIfStatement(Token ifToken, Token? elseToken) {
     DirectParserASTContentIfStatementEnd data =
         new DirectParserASTContentIfStatementEnd(DirectParserASTType.END,
             ifToken: ifToken, elseToken: elseToken);
@@ -976,14 +974,14 @@
     seen(data);
   }
 
-  void handleImportPrefix(Token deferredKeyword, Token asKeyword) {
+  void handleImportPrefix(Token? deferredKeyword, Token? asKeyword) {
     DirectParserASTContentImportPrefixHandle data =
         new DirectParserASTContentImportPrefixHandle(DirectParserASTType.HANDLE,
             deferredKeyword: deferredKeyword, asKeyword: asKeyword);
     seen(data);
   }
 
-  void endImport(Token importKeyword, Token semicolon) {
+  void endImport(Token importKeyword, Token? semicolon) {
     DirectParserASTContentImportEnd data = new DirectParserASTContentImportEnd(
         DirectParserASTType.END,
         importKeyword: importKeyword,
@@ -991,7 +989,7 @@
     seen(data);
   }
 
-  void handleRecoverImport(Token semicolon) {
+  void handleRecoverImport(Token? semicolon) {
     DirectParserASTContentRecoverImportHandle data =
         new DirectParserASTContentRecoverImportHandle(
             DirectParserASTType.HANDLE,
@@ -1021,7 +1019,7 @@
     seen(data);
   }
 
-  void endConditionalUri(Token ifKeyword, Token leftParen, Token equalSign) {
+  void endConditionalUri(Token ifKeyword, Token leftParen, Token? equalSign) {
     DirectParserASTContentConditionalUriEnd data =
         new DirectParserASTContentConditionalUriEnd(DirectParserASTType.END,
             ifKeyword: ifKeyword, leftParen: leftParen, equalSign: equalSign);
@@ -1226,7 +1224,7 @@
     seen(data);
   }
 
-  void handleInterpolationExpression(Token leftBracket, Token rightBracket) {
+  void handleInterpolationExpression(Token leftBracket, Token? rightBracket) {
     DirectParserASTContentInterpolationExpressionHandle data =
         new DirectParserASTContentInterpolationExpressionHandle(
             DirectParserASTType.HANDLE,
@@ -1271,8 +1269,13 @@
     seen(data);
   }
 
-  void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
-      Token varFinalOrConst, Token getOrSet, Token name) {
+  void beginMethod(
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? varFinalOrConst,
+      Token? getOrSet,
+      Token name) {
     DirectParserASTContentMethodBegin data =
         new DirectParserASTContentMethodBegin(DirectParserASTType.BEGIN,
             externalToken: externalToken,
@@ -1284,8 +1287,8 @@
     seen(data);
   }
 
-  void endClassMethod(Token getOrSet, Token beginToken, Token beginParam,
-      Token beginInitializers, Token endToken) {
+  void endClassMethod(Token? getOrSet, Token beginToken, Token beginParam,
+      Token? beginInitializers, Token endToken) {
     DirectParserASTContentClassMethodEnd data =
         new DirectParserASTContentClassMethodEnd(DirectParserASTType.END,
             getOrSet: getOrSet,
@@ -1296,8 +1299,8 @@
     seen(data);
   }
 
-  void endMixinMethod(Token getOrSet, Token beginToken, Token beginParam,
-      Token beginInitializers, Token endToken) {
+  void endMixinMethod(Token? getOrSet, Token beginToken, Token beginParam,
+      Token? beginInitializers, Token endToken) {
     DirectParserASTContentMixinMethodEnd data =
         new DirectParserASTContentMixinMethodEnd(DirectParserASTType.END,
             getOrSet: getOrSet,
@@ -1308,8 +1311,8 @@
     seen(data);
   }
 
-  void endExtensionMethod(Token getOrSet, Token beginToken, Token beginParam,
-      Token beginInitializers, Token endToken) {
+  void endExtensionMethod(Token? getOrSet, Token beginToken, Token beginParam,
+      Token? beginInitializers, Token endToken) {
     DirectParserASTContentExtensionMethodEnd data =
         new DirectParserASTContentExtensionMethodEnd(DirectParserASTType.END,
             getOrSet: getOrSet,
@@ -1320,8 +1323,8 @@
     seen(data);
   }
 
-  void endClassConstructor(Token getOrSet, Token beginToken, Token beginParam,
-      Token beginInitializers, Token endToken) {
+  void endClassConstructor(Token? getOrSet, Token beginToken, Token beginParam,
+      Token? beginInitializers, Token endToken) {
     DirectParserASTContentClassConstructorEnd data =
         new DirectParserASTContentClassConstructorEnd(DirectParserASTType.END,
             getOrSet: getOrSet,
@@ -1332,8 +1335,8 @@
     seen(data);
   }
 
-  void endMixinConstructor(Token getOrSet, Token beginToken, Token beginParam,
-      Token beginInitializers, Token endToken) {
+  void endMixinConstructor(Token? getOrSet, Token beginToken, Token beginParam,
+      Token? beginInitializers, Token endToken) {
     DirectParserASTContentMixinConstructorEnd data =
         new DirectParserASTContentMixinConstructorEnd(DirectParserASTType.END,
             getOrSet: getOrSet,
@@ -1344,8 +1347,8 @@
     seen(data);
   }
 
-  void endExtensionConstructor(Token getOrSet, Token beginToken,
-      Token beginParam, Token beginInitializers, Token endToken) {
+  void endExtensionConstructor(Token? getOrSet, Token beginToken,
+      Token beginParam, Token? beginInitializers, Token endToken) {
     DirectParserASTContentExtensionConstructorEnd data =
         new DirectParserASTContentExtensionConstructorEnd(
             DirectParserASTType.END,
@@ -1378,7 +1381,7 @@
     seen(data);
   }
 
-  void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
+  void endMetadata(Token beginToken, Token? periodBeforeName, Token endToken) {
     DirectParserASTContentMetadataEnd data =
         new DirectParserASTContentMetadataEnd(DirectParserASTType.END,
             beginToken: beginToken,
@@ -1499,7 +1502,7 @@
     seen(data);
   }
 
-  void handleExpressionFunctionBody(Token arrowToken, Token endToken) {
+  void handleExpressionFunctionBody(Token arrowToken, Token? endToken) {
     DirectParserASTContentExpressionFunctionBodyHandle data =
         new DirectParserASTContentExpressionFunctionBodyHandle(
             DirectParserASTType.HANDLE,
@@ -1637,11 +1640,11 @@
   }
 
   void endTopLevelFields(
-      Token externalToken,
-      Token staticToken,
-      Token covariantToken,
-      Token lateToken,
-      Token varFinalOrConst,
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? lateToken,
+      Token? varFinalOrConst,
       int count,
       Token beginToken,
       Token endToken) {
@@ -1658,14 +1661,14 @@
     seen(data);
   }
 
-  void beginTopLevelMethod(Token lastConsumed, Token externalToken) {
+  void beginTopLevelMethod(Token lastConsumed, Token? externalToken) {
     DirectParserASTContentTopLevelMethodBegin data =
         new DirectParserASTContentTopLevelMethodBegin(DirectParserASTType.BEGIN,
             lastConsumed: lastConsumed, externalToken: externalToken);
     seen(data);
   }
 
-  void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {
+  void endTopLevelMethod(Token beginToken, Token? getOrSet, Token endToken) {
     DirectParserASTContentTopLevelMethodEnd data =
         new DirectParserASTContentTopLevelMethodEnd(DirectParserASTType.END,
             beginToken: beginToken, getOrSet: getOrSet, endToken: endToken);
@@ -1700,7 +1703,7 @@
     seen(data);
   }
 
-  void handleCatchBlock(Token onKeyword, Token catchKeyword, Token comma) {
+  void handleCatchBlock(Token? onKeyword, Token? catchKeyword, Token? comma) {
     DirectParserASTContentCatchBlockHandle data =
         new DirectParserASTContentCatchBlockHandle(DirectParserASTType.HANDLE,
             onKeyword: onKeyword, catchKeyword: catchKeyword, comma: comma);
@@ -1714,7 +1717,8 @@
     seen(data);
   }
 
-  void endTryStatement(int catchCount, Token tryKeyword, Token finallyKeyword) {
+  void endTryStatement(
+      int catchCount, Token tryKeyword, Token? finallyKeyword) {
     DirectParserASTContentTryStatementEnd data =
         new DirectParserASTContentTryStatementEnd(DirectParserASTType.END,
             catchCount: catchCount,
@@ -1723,7 +1727,7 @@
     seen(data);
   }
 
-  void handleType(Token beginToken, Token questionMark) {
+  void handleType(Token beginToken, Token? questionMark) {
     DirectParserASTContentTypeHandle data =
         new DirectParserASTContentTypeHandle(DirectParserASTType.HANDLE,
             beginToken: beginToken, questionMark: questionMark);
@@ -1752,7 +1756,7 @@
     seen(data);
   }
 
-  void endFunctionType(Token functionToken, Token questionMark) {
+  void endFunctionType(Token functionToken, Token? questionMark) {
     DirectParserASTContentFunctionTypeEnd data =
         new DirectParserASTContentFunctionTypeEnd(DirectParserASTType.END,
             functionToken: functionToken, questionMark: questionMark);
@@ -1806,7 +1810,7 @@
   }
 
   void endTypeVariable(
-      Token token, int index, Token extendsOrSuper, Token variance) {
+      Token token, int index, Token? extendsOrSuper, Token? variance) {
     DirectParserASTContentTypeVariableEnd data =
         new DirectParserASTContentTypeVariableEnd(DirectParserASTType.END,
             token: token,
@@ -1846,7 +1850,7 @@
   }
 
   void beginVariablesDeclaration(
-      Token token, Token lateToken, Token varFinalOrConst) {
+      Token token, Token? lateToken, Token? varFinalOrConst) {
     DirectParserASTContentVariablesDeclarationBegin data =
         new DirectParserASTContentVariablesDeclarationBegin(
             DirectParserASTType.BEGIN,
@@ -1856,7 +1860,7 @@
     seen(data);
   }
 
-  void endVariablesDeclaration(int count, Token endToken) {
+  void endVariablesDeclaration(int count, Token? endToken) {
     DirectParserASTContentVariablesDeclarationEnd data =
         new DirectParserASTContentVariablesDeclarationEnd(
             DirectParserASTType.END,
@@ -1977,7 +1981,7 @@
     seen(data);
   }
 
-  void beginForControlFlow(Token awaitToken, Token forToken) {
+  void beginForControlFlow(Token? awaitToken, Token forToken) {
     DirectParserASTContentForControlFlowBegin data =
         new DirectParserASTContentForControlFlowBegin(DirectParserASTType.BEGIN,
             awaitToken: awaitToken, forToken: forToken);
@@ -2051,7 +2055,7 @@
     seen(data);
   }
 
-  void endFunctionTypedFormalParameter(Token nameToken, Token question) {
+  void endFunctionTypedFormalParameter(Token nameToken, Token? question) {
     DirectParserASTContentFunctionTypedFormalParameterEnd data =
         new DirectParserASTContentFunctionTypedFormalParameterEnd(
             DirectParserASTType.END,
@@ -2068,7 +2072,7 @@
   }
 
   void handleIndexedExpression(
-      Token question, Token openSquareBracket, Token closeSquareBracket) {
+      Token? question, Token openSquareBracket, Token closeSquareBracket) {
     DirectParserASTContentIndexedExpressionHandle data =
         new DirectParserASTContentIndexedExpressionHandle(
             DirectParserASTType.HANDLE,
@@ -2092,7 +2096,7 @@
     seen(data);
   }
 
-  void handleIsOperator(Token isOperator, Token not) {
+  void handleIsOperator(Token isOperator, Token? not) {
     DirectParserASTContentIsOperatorHandle data =
         new DirectParserASTContentIsOperatorHandle(DirectParserASTType.HANDLE,
             isOperator: isOperator, not: not);
@@ -2144,7 +2148,7 @@
   }
 
   void endAssert(Token assertKeyword, Assert kind, Token leftParenthesis,
-      Token commaToken, Token semicolonToken) {
+      Token? commaToken, Token semicolonToken) {
     DirectParserASTContentAssertEnd data = new DirectParserASTContentAssertEnd(
         DirectParserASTType.END,
         assertKeyword: assertKeyword,
@@ -2171,7 +2175,7 @@
   }
 
   void handleLiteralList(
-      int count, Token leftBracket, Token constKeyword, Token rightBracket) {
+      int count, Token leftBracket, Token? constKeyword, Token rightBracket) {
     DirectParserASTContentLiteralListHandle data =
         new DirectParserASTContentLiteralListHandle(DirectParserASTType.HANDLE,
             count: count,
@@ -2184,7 +2188,7 @@
   void handleLiteralSetOrMap(
     int count,
     Token leftBrace,
-    Token constKeyword,
+    Token? constKeyword,
     Token rightBrace,
     bool hasSetEntry,
   ) {
@@ -2347,8 +2351,8 @@
   void endSwitchCase(
       int labelCount,
       int expressionCount,
-      Token defaultKeyword,
-      Token colonAfterDefault,
+      Token? defaultKeyword,
+      Token? colonAfterDefault,
       int statementCount,
       Token firstToken,
       Token endToken) {
@@ -2450,14 +2454,14 @@
     seen(data);
   }
 
-  void endYieldStatement(Token yieldToken, Token starToken, Token endToken) {
+  void endYieldStatement(Token yieldToken, Token? starToken, Token endToken) {
     DirectParserASTContentYieldStatementEnd data =
         new DirectParserASTContentYieldStatementEnd(DirectParserASTType.END,
             yieldToken: yieldToken, starToken: starToken, endToken: endToken);
     seen(data);
   }
 
-  void endInvalidYieldStatement(Token beginToken, Token starToken,
+  void endInvalidYieldStatement(Token beginToken, Token? starToken,
       Token endToken, MessageCode errorCode) {
     DirectParserASTContentInvalidYieldStatementEnd data =
         new DirectParserASTContentInvalidYieldStatementEnd(
@@ -2525,7 +2529,7 @@
   }
 
   void handleCommentReference(
-      Token newKeyword, Token prefix, Token period, Token token) {
+      Token? newKeyword, Token? prefix, Token? period, Token token) {
     DirectParserASTContentCommentReferenceHandle data =
         new DirectParserASTContentCommentReferenceHandle(
             DirectParserASTType.HANDLE,
@@ -2547,10 +2551,11 @@
 class DirectParserASTContentArgumentsBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentArgumentsBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentArgumentsBegin(DirectParserASTType type,
+      {required this.token})
       : super("Arguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2561,10 +2566,10 @@
   final Token endToken;
 
   DirectParserASTContentArgumentsEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken})
+      {required this.count, required this.beginToken, required this.endToken})
       : super("Arguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -2572,14 +2577,14 @@
 }
 
 class DirectParserASTContentAsyncModifierHandle extends DirectParserASTContent {
-  final Token asyncToken;
-  final Token starToken;
+  final Token? asyncToken;
+  final Token? starToken;
 
   DirectParserASTContentAsyncModifierHandle(DirectParserASTType type,
       {this.asyncToken, this.starToken})
       : super("AsyncModifier", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "asyncToken": asyncToken,
         "starToken": starToken,
       };
@@ -2590,10 +2595,10 @@
   final Token token;
 
   DirectParserASTContentAwaitExpressionBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("AwaitExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2603,10 +2608,10 @@
   final Token endToken;
 
   DirectParserASTContentAwaitExpressionEnd(DirectParserASTType type,
-      {this.beginToken, this.endToken})
+      {required this.beginToken, required this.endToken})
       : super("AwaitExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "endToken": endToken,
       };
@@ -2619,10 +2624,12 @@
   final MessageCode errorCode;
 
   DirectParserASTContentInvalidAwaitExpressionEnd(DirectParserASTType type,
-      {this.beginToken, this.endToken, this.errorCode})
+      {required this.beginToken,
+      required this.endToken,
+      required this.errorCode})
       : super("InvalidAwaitExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "endToken": endToken,
         "errorCode": errorCode,
@@ -2634,10 +2641,10 @@
   final BlockKind blockKind;
 
   DirectParserASTContentBlockBegin(DirectParserASTType type,
-      {this.token, this.blockKind})
+      {required this.token, required this.blockKind})
       : super("Block", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "blockKind": blockKind,
       };
@@ -2650,10 +2657,13 @@
   final BlockKind blockKind;
 
   DirectParserASTContentBlockEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken, this.blockKind})
+      {required this.count,
+      required this.beginToken,
+      required this.endToken,
+      required this.blockKind})
       : super("Block", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -2666,10 +2676,10 @@
   final Token token;
 
   DirectParserASTContentInvalidTopLevelBlockHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("InvalidTopLevelBlock", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2677,10 +2687,11 @@
 class DirectParserASTContentCascadeBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentCascadeBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentCascadeBegin(DirectParserASTType type,
+      {required this.token})
       : super("Cascade", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2689,17 +2700,17 @@
   DirectParserASTContentCascadeEnd(DirectParserASTType type)
       : super("Cascade", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentCaseExpressionBegin extends DirectParserASTContent {
   final Token caseKeyword;
 
   DirectParserASTContentCaseExpressionBegin(DirectParserASTType type,
-      {this.caseKeyword})
+      {required this.caseKeyword})
       : super("CaseExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "caseKeyword": caseKeyword,
       };
 }
@@ -2708,10 +2719,10 @@
   final Token colon;
 
   DirectParserASTContentCaseExpressionEnd(DirectParserASTType type,
-      {this.colon})
+      {required this.colon})
       : super("CaseExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "colon": colon,
       };
 }
@@ -2722,10 +2733,10 @@
   final Token token;
 
   DirectParserASTContentClassOrMixinBodyBegin(DirectParserASTType type,
-      {this.kind, this.token})
+      {required this.kind, required this.token})
       : super("ClassOrMixinBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "kind": kind,
         "token": token,
       };
@@ -2738,10 +2749,13 @@
   final Token endToken;
 
   DirectParserASTContentClassOrMixinBodyEnd(DirectParserASTType type,
-      {this.kind, this.memberCount, this.beginToken, this.endToken})
+      {required this.kind,
+      required this.memberCount,
+      required this.beginToken,
+      required this.endToken})
       : super("ClassOrMixinBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "kind": kind,
         "memberCount": memberCount,
         "beginToken": beginToken,
@@ -2755,10 +2769,10 @@
 
   DirectParserASTContentClassOrNamedMixinApplicationPreludeBegin(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ClassOrNamedMixinApplicationPrelude", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2766,14 +2780,14 @@
 class DirectParserASTContentClassDeclarationBegin
     extends DirectParserASTContent {
   final Token begin;
-  final Token abstractToken;
+  final Token? abstractToken;
   final Token name;
 
   DirectParserASTContentClassDeclarationBegin(DirectParserASTType type,
-      {this.begin, this.abstractToken, this.name})
+      {required this.begin, this.abstractToken, required this.name})
       : super("ClassDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "begin": begin,
         "abstractToken": abstractToken,
         "name": name,
@@ -2781,14 +2795,14 @@
 }
 
 class DirectParserASTContentClassExtendsHandle extends DirectParserASTContent {
-  final Token extendsKeyword;
+  final Token? extendsKeyword;
   final int typeCount;
 
   DirectParserASTContentClassExtendsHandle(DirectParserASTType type,
-      {this.extendsKeyword, this.typeCount})
+      {this.extendsKeyword, required this.typeCount})
       : super("ClassExtends", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "extendsKeyword": extendsKeyword,
         "typeCount": typeCount,
       };
@@ -2796,14 +2810,14 @@
 
 class DirectParserASTContentClassOrMixinImplementsHandle
     extends DirectParserASTContent {
-  final Token implementsKeyword;
+  final Token? implementsKeyword;
   final int interfacesCount;
 
   DirectParserASTContentClassOrMixinImplementsHandle(DirectParserASTType type,
-      {this.implementsKeyword, this.interfacesCount})
+      {this.implementsKeyword, required this.interfacesCount})
       : super("ClassOrMixinImplements", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "implementsKeyword": implementsKeyword,
         "interfacesCount": interfacesCount,
       };
@@ -2812,13 +2826,13 @@
 class DirectParserASTContentClassHeaderHandle extends DirectParserASTContent {
   final Token begin;
   final Token classKeyword;
-  final Token nativeToken;
+  final Token? nativeToken;
 
   DirectParserASTContentClassHeaderHandle(DirectParserASTType type,
-      {this.begin, this.classKeyword, this.nativeToken})
+      {required this.begin, required this.classKeyword, this.nativeToken})
       : super("ClassHeader", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "begin": begin,
         "classKeyword": classKeyword,
         "nativeToken": nativeToken,
@@ -2830,7 +2844,7 @@
   DirectParserASTContentRecoverClassHeaderHandle(DirectParserASTType type)
       : super("RecoverClassHeader", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentClassDeclarationEnd extends DirectParserASTContent {
@@ -2838,10 +2852,10 @@
   final Token endToken;
 
   DirectParserASTContentClassDeclarationEnd(DirectParserASTType type,
-      {this.beginToken, this.endToken})
+      {required this.beginToken, required this.endToken})
       : super("ClassDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "endToken": endToken,
       };
@@ -2853,24 +2867,24 @@
   final Token name;
 
   DirectParserASTContentMixinDeclarationBegin(DirectParserASTType type,
-      {this.mixinKeyword, this.name})
+      {required this.mixinKeyword, required this.name})
       : super("MixinDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "mixinKeyword": mixinKeyword,
         "name": name,
       };
 }
 
 class DirectParserASTContentMixinOnHandle extends DirectParserASTContent {
-  final Token onKeyword;
+  final Token? onKeyword;
   final int typeCount;
 
   DirectParserASTContentMixinOnHandle(DirectParserASTType type,
-      {this.onKeyword, this.typeCount})
+      {this.onKeyword, required this.typeCount})
       : super("MixinOn", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "onKeyword": onKeyword,
         "typeCount": typeCount,
       };
@@ -2880,10 +2894,10 @@
   final Token mixinKeyword;
 
   DirectParserASTContentMixinHeaderHandle(DirectParserASTType type,
-      {this.mixinKeyword})
+      {required this.mixinKeyword})
       : super("MixinHeader", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "mixinKeyword": mixinKeyword,
       };
 }
@@ -2893,7 +2907,7 @@
   DirectParserASTContentRecoverMixinHeaderHandle(DirectParserASTType type)
       : super("RecoverMixinHeader", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentMixinDeclarationEnd extends DirectParserASTContent {
@@ -2901,10 +2915,10 @@
   final Token endToken;
 
   DirectParserASTContentMixinDeclarationEnd(DirectParserASTType type,
-      {this.mixinKeyword, this.endToken})
+      {required this.mixinKeyword, required this.endToken})
       : super("MixinDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "mixinKeyword": mixinKeyword,
         "endToken": endToken,
       };
@@ -2916,10 +2930,10 @@
 
   DirectParserASTContentUncategorizedTopLevelDeclarationBegin(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("UncategorizedTopLevelDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2930,10 +2944,10 @@
 
   DirectParserASTContentExtensionDeclarationPreludeBegin(
       DirectParserASTType type,
-      {this.extensionKeyword})
+      {required this.extensionKeyword})
       : super("ExtensionDeclarationPrelude", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "extensionKeyword": extensionKeyword,
       };
 }
@@ -2941,13 +2955,13 @@
 class DirectParserASTContentExtensionDeclarationBegin
     extends DirectParserASTContent {
   final Token extensionKeyword;
-  final Token name;
+  final Token? name;
 
   DirectParserASTContentExtensionDeclarationBegin(DirectParserASTType type,
-      {this.extensionKeyword, this.name})
+      {required this.extensionKeyword, this.name})
       : super("ExtensionDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "extensionKeyword": extensionKeyword,
         "name": name,
       };
@@ -2960,10 +2974,12 @@
   final Token endToken;
 
   DirectParserASTContentExtensionDeclarationEnd(DirectParserASTType type,
-      {this.extensionKeyword, this.onKeyword, this.endToken})
+      {required this.extensionKeyword,
+      required this.onKeyword,
+      required this.endToken})
       : super("ExtensionDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "extensionKeyword": extensionKeyword,
         "onKeyword": onKeyword,
         "endToken": endToken,
@@ -2973,10 +2989,11 @@
 class DirectParserASTContentCombinatorsBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentCombinatorsBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentCombinatorsBegin(DirectParserASTType type,
+      {required this.token})
       : super("Combinators", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -2984,10 +3001,11 @@
 class DirectParserASTContentCombinatorsEnd extends DirectParserASTContent {
   final int count;
 
-  DirectParserASTContentCombinatorsEnd(DirectParserASTType type, {this.count})
+  DirectParserASTContentCombinatorsEnd(DirectParserASTType type,
+      {required this.count})
       : super("Combinators", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
       };
 }
@@ -2997,10 +3015,10 @@
   final Token token;
 
   DirectParserASTContentCompilationUnitBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("CompilationUnit", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3010,7 +3028,7 @@
   DirectParserASTContentDirectivesOnlyHandle(DirectParserASTType type)
       : super("DirectivesOnly", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentCompilationUnitEnd extends DirectParserASTContent {
@@ -3018,10 +3036,10 @@
   final Token token;
 
   DirectParserASTContentCompilationUnitEnd(DirectParserASTType type,
-      {this.count, this.token})
+      {required this.count, required this.token})
       : super("CompilationUnit", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "token": token,
       };
@@ -3031,10 +3049,10 @@
   final Token token;
 
   DirectParserASTContentConstLiteralBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ConstLiteral", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3042,10 +3060,11 @@
 class DirectParserASTContentConstLiteralEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentConstLiteralEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentConstLiteralEnd(DirectParserASTType type,
+      {required this.token})
       : super("ConstLiteral", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3055,10 +3074,10 @@
   final Token start;
 
   DirectParserASTContentConstructorReferenceBegin(DirectParserASTType type,
-      {this.start})
+      {required this.start})
       : super("ConstructorReference", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "start": start,
       };
 }
@@ -3066,14 +3085,14 @@
 class DirectParserASTContentConstructorReferenceEnd
     extends DirectParserASTContent {
   final Token start;
-  final Token periodBeforeName;
+  final Token? periodBeforeName;
   final Token endToken;
 
   DirectParserASTContentConstructorReferenceEnd(DirectParserASTType type,
-      {this.start, this.periodBeforeName, this.endToken})
+      {required this.start, this.periodBeforeName, required this.endToken})
       : super("ConstructorReference", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "start": start,
         "periodBeforeName": periodBeforeName,
         "endToken": endToken,
@@ -3085,10 +3104,10 @@
   final Token token;
 
   DirectParserASTContentDoWhileStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("DoWhileStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3099,10 +3118,12 @@
   final Token endToken;
 
   DirectParserASTContentDoWhileStatementEnd(DirectParserASTType type,
-      {this.doKeyword, this.whileKeyword, this.endToken})
+      {required this.doKeyword,
+      required this.whileKeyword,
+      required this.endToken})
       : super("DoWhileStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "doKeyword": doKeyword,
         "whileKeyword": whileKeyword,
         "endToken": endToken,
@@ -3114,10 +3135,10 @@
   final Token token;
 
   DirectParserASTContentDoWhileStatementBodyBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("DoWhileStatementBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3127,10 +3148,10 @@
   final Token token;
 
   DirectParserASTContentDoWhileStatementBodyEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("DoWhileStatementBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3140,10 +3161,10 @@
   final Token token;
 
   DirectParserASTContentWhileStatementBodyBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("WhileStatementBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3153,10 +3174,10 @@
   final Token token;
 
   DirectParserASTContentWhileStatementBodyEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("WhileStatementBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3164,10 +3185,11 @@
 class DirectParserASTContentEnumBegin extends DirectParserASTContent {
   final Token enumKeyword;
 
-  DirectParserASTContentEnumBegin(DirectParserASTType type, {this.enumKeyword})
+  DirectParserASTContentEnumBegin(DirectParserASTType type,
+      {required this.enumKeyword})
       : super("Enum", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "enumKeyword": enumKeyword,
       };
 }
@@ -3178,10 +3200,10 @@
   final int count;
 
   DirectParserASTContentEnumEnd(DirectParserASTType type,
-      {this.enumKeyword, this.leftBrace, this.count})
+      {required this.enumKeyword, required this.leftBrace, required this.count})
       : super("Enum", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "enumKeyword": enumKeyword,
         "leftBrace": leftBrace,
         "count": count,
@@ -3191,10 +3213,11 @@
 class DirectParserASTContentExportBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentExportBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentExportBegin(DirectParserASTType type,
+      {required this.token})
       : super("Export", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3204,10 +3227,10 @@
   final Token semicolon;
 
   DirectParserASTContentExportEnd(DirectParserASTType type,
-      {this.exportKeyword, this.semicolon})
+      {required this.exportKeyword, required this.semicolon})
       : super("Export", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "exportKeyword": exportKeyword,
         "semicolon": semicolon,
       };
@@ -3219,10 +3242,10 @@
   final Message message;
 
   DirectParserASTContentExtraneousExpressionHandle(DirectParserASTType type,
-      {this.token, this.message})
+      {required this.token, required this.message})
       : super("ExtraneousExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "message": message,
       };
@@ -3233,24 +3256,24 @@
   final Token token;
 
   DirectParserASTContentExpressionStatementHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ExpressionStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
 
 class DirectParserASTContentFactoryMethodBegin extends DirectParserASTContent {
   final Token lastConsumed;
-  final Token externalToken;
-  final Token constToken;
+  final Token? externalToken;
+  final Token? constToken;
 
   DirectParserASTContentFactoryMethodBegin(DirectParserASTType type,
-      {this.lastConsumed, this.externalToken, this.constToken})
+      {required this.lastConsumed, this.externalToken, this.constToken})
       : super("FactoryMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "lastConsumed": lastConsumed,
         "externalToken": externalToken,
         "constToken": constToken,
@@ -3264,10 +3287,12 @@
   final Token endToken;
 
   DirectParserASTContentClassFactoryMethodEnd(DirectParserASTType type,
-      {this.beginToken, this.factoryKeyword, this.endToken})
+      {required this.beginToken,
+      required this.factoryKeyword,
+      required this.endToken})
       : super("ClassFactoryMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "factoryKeyword": factoryKeyword,
         "endToken": endToken,
@@ -3281,10 +3306,12 @@
   final Token endToken;
 
   DirectParserASTContentMixinFactoryMethodEnd(DirectParserASTType type,
-      {this.beginToken, this.factoryKeyword, this.endToken})
+      {required this.beginToken,
+      required this.factoryKeyword,
+      required this.endToken})
       : super("MixinFactoryMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "factoryKeyword": factoryKeyword,
         "endToken": endToken,
@@ -3298,10 +3325,12 @@
   final Token endToken;
 
   DirectParserASTContentExtensionFactoryMethodEnd(DirectParserASTType type,
-      {this.beginToken, this.factoryKeyword, this.endToken})
+      {required this.beginToken,
+      required this.factoryKeyword,
+      required this.endToken})
       : super("ExtensionFactoryMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "factoryKeyword": factoryKeyword,
         "endToken": endToken,
@@ -3312,19 +3341,19 @@
     extends DirectParserASTContent {
   final Token token;
   final MemberKind kind;
-  final Token requiredToken;
-  final Token covariantToken;
-  final Token varFinalOrConst;
+  final Token? requiredToken;
+  final Token? covariantToken;
+  final Token? varFinalOrConst;
 
   DirectParserASTContentFormalParameterBegin(DirectParserASTType type,
-      {this.token,
-      this.kind,
+      {required this.token,
+      required this.kind,
       this.requiredToken,
       this.covariantToken,
       this.varFinalOrConst})
       : super("FormalParameter", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "kind": kind,
         "requiredToken": requiredToken,
@@ -3334,25 +3363,25 @@
 }
 
 class DirectParserASTContentFormalParameterEnd extends DirectParserASTContent {
-  final Token thisKeyword;
-  final Token periodAfterThis;
+  final Token? thisKeyword;
+  final Token? periodAfterThis;
   final Token nameToken;
-  final Token initializerStart;
-  final Token initializerEnd;
+  final Token? initializerStart;
+  final Token? initializerEnd;
   final FormalParameterKind kind;
   final MemberKind memberKind;
 
   DirectParserASTContentFormalParameterEnd(DirectParserASTType type,
       {this.thisKeyword,
       this.periodAfterThis,
-      this.nameToken,
+      required this.nameToken,
       this.initializerStart,
       this.initializerEnd,
-      this.kind,
-      this.memberKind})
+      required this.kind,
+      required this.memberKind})
       : super("FormalParameter", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "thisKeyword": thisKeyword,
         "periodAfterThis": periodAfterThis,
         "nameToken": nameToken,
@@ -3369,10 +3398,10 @@
   final MemberKind kind;
 
   DirectParserASTContentNoFormalParametersHandle(DirectParserASTType type,
-      {this.token, this.kind})
+      {required this.token, required this.kind})
       : super("NoFormalParameters", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "kind": kind,
       };
@@ -3384,10 +3413,10 @@
   final MemberKind kind;
 
   DirectParserASTContentFormalParametersBegin(DirectParserASTType type,
-      {this.token, this.kind})
+      {required this.token, required this.kind})
       : super("FormalParameters", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "kind": kind,
       };
@@ -3400,10 +3429,13 @@
   final MemberKind kind;
 
   DirectParserASTContentFormalParametersEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken, this.kind})
+      {required this.count,
+      required this.beginToken,
+      required this.endToken,
+      required this.kind})
       : super("FormalParameters", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -3412,12 +3444,12 @@
 }
 
 class DirectParserASTContentClassFieldsEnd extends DirectParserASTContent {
-  final Token abstractToken;
-  final Token externalToken;
-  final Token staticToken;
-  final Token covariantToken;
-  final Token lateToken;
-  final Token varFinalOrConst;
+  final Token? abstractToken;
+  final Token? externalToken;
+  final Token? staticToken;
+  final Token? covariantToken;
+  final Token? lateToken;
+  final Token? varFinalOrConst;
   final int count;
   final Token beginToken;
   final Token endToken;
@@ -3429,12 +3461,12 @@
       this.covariantToken,
       this.lateToken,
       this.varFinalOrConst,
-      this.count,
-      this.beginToken,
-      this.endToken})
+      required this.count,
+      required this.beginToken,
+      required this.endToken})
       : super("ClassFields", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "abstractToken": abstractToken,
         "externalToken": externalToken,
         "staticToken": staticToken,
@@ -3448,12 +3480,12 @@
 }
 
 class DirectParserASTContentMixinFieldsEnd extends DirectParserASTContent {
-  final Token abstractToken;
-  final Token externalToken;
-  final Token staticToken;
-  final Token covariantToken;
-  final Token lateToken;
-  final Token varFinalOrConst;
+  final Token? abstractToken;
+  final Token? externalToken;
+  final Token? staticToken;
+  final Token? covariantToken;
+  final Token? lateToken;
+  final Token? varFinalOrConst;
   final int count;
   final Token beginToken;
   final Token endToken;
@@ -3465,12 +3497,12 @@
       this.covariantToken,
       this.lateToken,
       this.varFinalOrConst,
-      this.count,
-      this.beginToken,
-      this.endToken})
+      required this.count,
+      required this.beginToken,
+      required this.endToken})
       : super("MixinFields", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "abstractToken": abstractToken,
         "externalToken": externalToken,
         "staticToken": staticToken,
@@ -3484,12 +3516,12 @@
 }
 
 class DirectParserASTContentExtensionFieldsEnd extends DirectParserASTContent {
-  final Token abstractToken;
-  final Token externalToken;
-  final Token staticToken;
-  final Token covariantToken;
-  final Token lateToken;
-  final Token varFinalOrConst;
+  final Token? abstractToken;
+  final Token? externalToken;
+  final Token? staticToken;
+  final Token? covariantToken;
+  final Token? lateToken;
+  final Token? varFinalOrConst;
   final int count;
   final Token beginToken;
   final Token endToken;
@@ -3501,12 +3533,12 @@
       this.covariantToken,
       this.lateToken,
       this.varFinalOrConst,
-      this.count,
-      this.beginToken,
-      this.endToken})
+      required this.count,
+      required this.beginToken,
+      required this.endToken})
       : super("ExtensionFields", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "abstractToken": abstractToken,
         "externalToken": externalToken,
         "staticToken": staticToken,
@@ -3525,10 +3557,10 @@
 
   DirectParserASTContentForInitializerEmptyStatementHandle(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForInitializerEmptyStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3540,11 +3572,11 @@
 
   DirectParserASTContentForInitializerExpressionStatementHandle(
       DirectParserASTType type,
-      {this.token,
-      this.forIn})
+      {required this.token,
+      required this.forIn})
       : super("ForInitializerExpressionStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "forIn": forIn,
       };
@@ -3557,11 +3589,11 @@
 
   DirectParserASTContentForInitializerLocalVariableDeclarationHandle(
       DirectParserASTType type,
-      {this.token,
-      this.forIn})
+      {required this.token,
+      required this.forIn})
       : super("ForInitializerLocalVariableDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "forIn": forIn,
       };
@@ -3571,10 +3603,10 @@
   final Token token;
 
   DirectParserASTContentForStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3586,13 +3618,13 @@
   final int updateExpressionCount;
 
   DirectParserASTContentForLoopPartsHandle(DirectParserASTType type,
-      {this.forKeyword,
-      this.leftParen,
-      this.leftSeparator,
-      this.updateExpressionCount})
+      {required this.forKeyword,
+      required this.leftParen,
+      required this.leftSeparator,
+      required this.updateExpressionCount})
       : super("ForLoopParts", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "forKeyword": forKeyword,
         "leftParen": leftParen,
         "leftSeparator": leftSeparator,
@@ -3604,10 +3636,10 @@
   final Token endToken;
 
   DirectParserASTContentForStatementEnd(DirectParserASTType type,
-      {this.endToken})
+      {required this.endToken})
       : super("ForStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "endToken": endToken,
       };
 }
@@ -3617,10 +3649,10 @@
   final Token token;
 
   DirectParserASTContentForStatementBodyBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForStatementBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3629,26 +3661,29 @@
   final Token token;
 
   DirectParserASTContentForStatementBodyEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForStatementBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
 
 class DirectParserASTContentForInLoopPartsHandle
     extends DirectParserASTContent {
-  final Token awaitToken;
+  final Token? awaitToken;
   final Token forToken;
   final Token leftParenthesis;
   final Token inKeyword;
 
   DirectParserASTContentForInLoopPartsHandle(DirectParserASTType type,
-      {this.awaitToken, this.forToken, this.leftParenthesis, this.inKeyword})
+      {this.awaitToken,
+      required this.forToken,
+      required this.leftParenthesis,
+      required this.inKeyword})
       : super("ForInLoopParts", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "awaitToken": awaitToken,
         "forToken": forToken,
         "leftParenthesis": leftParenthesis,
@@ -3659,10 +3694,11 @@
 class DirectParserASTContentForInEnd extends DirectParserASTContent {
   final Token endToken;
 
-  DirectParserASTContentForInEnd(DirectParserASTType type, {this.endToken})
+  DirectParserASTContentForInEnd(DirectParserASTType type,
+      {required this.endToken})
       : super("ForIn", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "endToken": endToken,
       };
 }
@@ -3672,10 +3708,10 @@
   final Token token;
 
   DirectParserASTContentForInExpressionBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForInExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3684,10 +3720,10 @@
   final Token token;
 
   DirectParserASTContentForInExpressionEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForInExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3695,10 +3731,11 @@
 class DirectParserASTContentForInBodyBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentForInBodyBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentForInBodyBegin(DirectParserASTType type,
+      {required this.token})
       : super("ForInBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3706,10 +3743,11 @@
 class DirectParserASTContentForInBodyEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentForInBodyEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentForInBodyEnd(DirectParserASTType type,
+      {required this.token})
       : super("ForInBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3719,10 +3757,10 @@
   final Token token;
 
   DirectParserASTContentNamedFunctionExpressionBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NamedFunctionExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3732,10 +3770,10 @@
   final Token endToken;
 
   DirectParserASTContentNamedFunctionExpressionEnd(DirectParserASTType type,
-      {this.endToken})
+      {required this.endToken})
       : super("NamedFunctionExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "endToken": endToken,
       };
 }
@@ -3745,10 +3783,10 @@
   final Token token;
 
   DirectParserASTContentLocalFunctionDeclarationBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("LocalFunctionDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3758,10 +3796,10 @@
   final Token endToken;
 
   DirectParserASTContentLocalFunctionDeclarationEnd(DirectParserASTType type,
-      {this.endToken})
+      {required this.endToken})
       : super("LocalFunctionDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "endToken": endToken,
       };
 }
@@ -3771,10 +3809,10 @@
   final Token token;
 
   DirectParserASTContentBlockFunctionBodyBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("BlockFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3786,10 +3824,10 @@
   final Token endToken;
 
   DirectParserASTContentBlockFunctionBodyEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken})
+      {required this.count, required this.beginToken, required this.endToken})
       : super("BlockFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -3801,10 +3839,10 @@
   final Token token;
 
   DirectParserASTContentNoFunctionBodyHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3815,10 +3853,10 @@
   final bool isExpressionBody;
 
   DirectParserASTContentFunctionBodySkippedHandle(DirectParserASTType type,
-      {this.token, this.isExpressionBody})
+      {required this.token, required this.isExpressionBody})
       : super("FunctionBodySkipped", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "isExpressionBody": isExpressionBody,
       };
@@ -3828,10 +3866,10 @@
   final Token token;
 
   DirectParserASTContentFunctionNameBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("FunctionName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3841,10 +3879,10 @@
   final Token token;
 
   DirectParserASTContentFunctionNameEnd(DirectParserASTType type,
-      {this.beginToken, this.token})
+      {required this.beginToken, required this.token})
       : super("FunctionName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "token": token,
       };
@@ -3855,10 +3893,10 @@
   final Token token;
 
   DirectParserASTContentFunctionTypeAliasBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("FunctionTypeAlias", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -3866,14 +3904,14 @@
 class DirectParserASTContentFunctionTypeAliasEnd
     extends DirectParserASTContent {
   final Token typedefKeyword;
-  final Token equals;
+  final Token? equals;
   final Token endToken;
 
   DirectParserASTContentFunctionTypeAliasEnd(DirectParserASTType type,
-      {this.typedefKeyword, this.equals, this.endToken})
+      {required this.typedefKeyword, this.equals, required this.endToken})
       : super("FunctionTypeAlias", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "typedefKeyword": typedefKeyword,
         "equals": equals,
         "endToken": endToken,
@@ -3885,10 +3923,10 @@
   final Token withKeyword;
 
   DirectParserASTContentClassWithClauseHandle(DirectParserASTType type,
-      {this.withKeyword})
+      {required this.withKeyword})
       : super("ClassWithClause", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "withKeyword": withKeyword,
       };
 }
@@ -3898,20 +3936,20 @@
   DirectParserASTContentClassNoWithClauseHandle(DirectParserASTType type)
       : super("ClassNoWithClause", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentNamedMixinApplicationBegin
     extends DirectParserASTContent {
   final Token begin;
-  final Token abstractToken;
+  final Token? abstractToken;
   final Token name;
 
   DirectParserASTContentNamedMixinApplicationBegin(DirectParserASTType type,
-      {this.begin, this.abstractToken, this.name})
+      {required this.begin, this.abstractToken, required this.name})
       : super("NamedMixinApplication", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "begin": begin,
         "abstractToken": abstractToken,
         "name": name,
@@ -3924,10 +3962,10 @@
 
   DirectParserASTContentNamedMixinApplicationWithClauseHandle(
       DirectParserASTType type,
-      {this.withKeyword})
+      {required this.withKeyword})
       : super("NamedMixinApplicationWithClause", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "withKeyword": withKeyword,
       };
 }
@@ -3937,18 +3975,18 @@
   final Token begin;
   final Token classKeyword;
   final Token equals;
-  final Token implementsKeyword;
+  final Token? implementsKeyword;
   final Token endToken;
 
   DirectParserASTContentNamedMixinApplicationEnd(DirectParserASTType type,
-      {this.begin,
-      this.classKeyword,
-      this.equals,
+      {required this.begin,
+      required this.classKeyword,
+      required this.equals,
       this.implementsKeyword,
-      this.endToken})
+      required this.endToken})
       : super("NamedMixinApplication", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "begin": begin,
         "classKeyword": classKeyword,
         "equals": equals,
@@ -3960,10 +3998,11 @@
 class DirectParserASTContentHideBegin extends DirectParserASTContent {
   final Token hideKeyword;
 
-  DirectParserASTContentHideBegin(DirectParserASTType type, {this.hideKeyword})
+  DirectParserASTContentHideBegin(DirectParserASTType type,
+      {required this.hideKeyword})
       : super("Hide", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "hideKeyword": hideKeyword,
       };
 }
@@ -3971,10 +4010,11 @@
 class DirectParserASTContentHideEnd extends DirectParserASTContent {
   final Token hideKeyword;
 
-  DirectParserASTContentHideEnd(DirectParserASTType type, {this.hideKeyword})
+  DirectParserASTContentHideEnd(DirectParserASTType type,
+      {required this.hideKeyword})
       : super("Hide", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "hideKeyword": hideKeyword,
       };
 }
@@ -3984,10 +4024,10 @@
   final int count;
 
   DirectParserASTContentIdentifierListHandle(DirectParserASTType type,
-      {this.count})
+      {required this.count})
       : super("IdentifierList", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
       };
 }
@@ -3995,10 +4035,11 @@
 class DirectParserASTContentTypeListBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentTypeListBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentTypeListBegin(DirectParserASTType type,
+      {required this.token})
       : super("TypeList", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4006,10 +4047,11 @@
 class DirectParserASTContentTypeListEnd extends DirectParserASTContent {
   final int count;
 
-  DirectParserASTContentTypeListEnd(DirectParserASTType type, {this.count})
+  DirectParserASTContentTypeListEnd(DirectParserASTType type,
+      {required this.count})
       : super("TypeList", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
       };
 }
@@ -4017,23 +4059,24 @@
 class DirectParserASTContentIfStatementBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentIfStatementBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentIfStatementBegin(DirectParserASTType type,
+      {required this.token})
       : super("IfStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
 
 class DirectParserASTContentIfStatementEnd extends DirectParserASTContent {
   final Token ifToken;
-  final Token elseToken;
+  final Token? elseToken;
 
   DirectParserASTContentIfStatementEnd(DirectParserASTType type,
-      {this.ifToken, this.elseToken})
+      {required this.ifToken, this.elseToken})
       : super("IfStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "ifToken": ifToken,
         "elseToken": elseToken,
       };
@@ -4043,10 +4086,10 @@
   final Token token;
 
   DirectParserASTContentThenStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ThenStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4054,10 +4097,11 @@
 class DirectParserASTContentThenStatementEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentThenStatementEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentThenStatementEnd(DirectParserASTType type,
+      {required this.token})
       : super("ThenStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4066,10 +4110,10 @@
   final Token token;
 
   DirectParserASTContentElseStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ElseStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4077,10 +4121,11 @@
 class DirectParserASTContentElseStatementEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentElseStatementEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentElseStatementEnd(DirectParserASTType type,
+      {required this.token})
       : super("ElseStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4089,23 +4134,23 @@
   final Token importKeyword;
 
   DirectParserASTContentImportBegin(DirectParserASTType type,
-      {this.importKeyword})
+      {required this.importKeyword})
       : super("Import", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "importKeyword": importKeyword,
       };
 }
 
 class DirectParserASTContentImportPrefixHandle extends DirectParserASTContent {
-  final Token deferredKeyword;
-  final Token asKeyword;
+  final Token? deferredKeyword;
+  final Token? asKeyword;
 
   DirectParserASTContentImportPrefixHandle(DirectParserASTType type,
       {this.deferredKeyword, this.asKeyword})
       : super("ImportPrefix", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "deferredKeyword": deferredKeyword,
         "asKeyword": asKeyword,
       };
@@ -4113,26 +4158,26 @@
 
 class DirectParserASTContentImportEnd extends DirectParserASTContent {
   final Token importKeyword;
-  final Token semicolon;
+  final Token? semicolon;
 
   DirectParserASTContentImportEnd(DirectParserASTType type,
-      {this.importKeyword, this.semicolon})
+      {required this.importKeyword, this.semicolon})
       : super("Import", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "importKeyword": importKeyword,
         "semicolon": semicolon,
       };
 }
 
 class DirectParserASTContentRecoverImportHandle extends DirectParserASTContent {
-  final Token semicolon;
+  final Token? semicolon;
 
   DirectParserASTContentRecoverImportHandle(DirectParserASTType type,
       {this.semicolon})
       : super("RecoverImport", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "semicolon": semicolon,
       };
 }
@@ -4142,10 +4187,10 @@
   final Token token;
 
   DirectParserASTContentConditionalUrisBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ConditionalUris", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4154,10 +4199,10 @@
   final int count;
 
   DirectParserASTContentConditionalUrisEnd(DirectParserASTType type,
-      {this.count})
+      {required this.count})
       : super("ConditionalUris", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
       };
 }
@@ -4166,10 +4211,10 @@
   final Token ifKeyword;
 
   DirectParserASTContentConditionalUriBegin(DirectParserASTType type,
-      {this.ifKeyword})
+      {required this.ifKeyword})
       : super("ConditionalUri", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "ifKeyword": ifKeyword,
       };
 }
@@ -4177,13 +4222,13 @@
 class DirectParserASTContentConditionalUriEnd extends DirectParserASTContent {
   final Token ifKeyword;
   final Token leftParen;
-  final Token equalSign;
+  final Token? equalSign;
 
   DirectParserASTContentConditionalUriEnd(DirectParserASTType type,
-      {this.ifKeyword, this.leftParen, this.equalSign})
+      {required this.ifKeyword, required this.leftParen, this.equalSign})
       : super("ConditionalUri", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "ifKeyword": ifKeyword,
         "leftParen": leftParen,
         "equalSign": equalSign,
@@ -4195,10 +4240,10 @@
   final Token firstIdentifier;
 
   DirectParserASTContentDottedNameHandle(DirectParserASTType type,
-      {this.count, this.firstIdentifier})
+      {required this.count, required this.firstIdentifier})
       : super("DottedName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "firstIdentifier": firstIdentifier,
       };
@@ -4210,10 +4255,10 @@
 
   DirectParserASTContentImplicitCreationExpressionBegin(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ImplicitCreationExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4223,10 +4268,10 @@
   final Token token;
 
   DirectParserASTContentImplicitCreationExpressionEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ImplicitCreationExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4236,10 +4281,10 @@
   final Token token;
 
   DirectParserASTContentInitializedIdentifierBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("InitializedIdentifier", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4249,10 +4294,10 @@
   final Token nameToken;
 
   DirectParserASTContentInitializedIdentifierEnd(DirectParserASTType type,
-      {this.nameToken})
+      {required this.nameToken})
       : super("InitializedIdentifier", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nameToken": nameToken,
       };
 }
@@ -4262,10 +4307,10 @@
   final Token token;
 
   DirectParserASTContentFieldInitializerBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("FieldInitializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4275,10 +4320,10 @@
   final Token token;
 
   DirectParserASTContentFieldInitializerEnd(DirectParserASTType type,
-      {this.assignment, this.token})
+      {required this.assignment, required this.token})
       : super("FieldInitializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "assignment": assignment,
         "token": token,
       };
@@ -4289,10 +4334,10 @@
   final Token token;
 
   DirectParserASTContentNoFieldInitializerHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoFieldInitializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4302,10 +4347,10 @@
   final Token token;
 
   DirectParserASTContentVariableInitializerBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("VariableInitializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4315,10 +4360,10 @@
   final Token assignmentOperator;
 
   DirectParserASTContentVariableInitializerEnd(DirectParserASTType type,
-      {this.assignmentOperator})
+      {required this.assignmentOperator})
       : super("VariableInitializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "assignmentOperator": assignmentOperator,
       };
 }
@@ -4328,10 +4373,10 @@
   final Token token;
 
   DirectParserASTContentNoVariableInitializerHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoVariableInitializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4339,10 +4384,11 @@
 class DirectParserASTContentInitializerBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentInitializerBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentInitializerBegin(DirectParserASTType type,
+      {required this.token})
       : super("Initializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4350,10 +4396,11 @@
 class DirectParserASTContentInitializerEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentInitializerEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentInitializerEnd(DirectParserASTType type,
+      {required this.token})
       : super("Initializer", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4362,10 +4409,10 @@
   final Token token;
 
   DirectParserASTContentInitializersBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("Initializers", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4376,10 +4423,10 @@
   final Token endToken;
 
   DirectParserASTContentInitializersEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken})
+      {required this.count, required this.beginToken, required this.endToken})
       : super("Initializers", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -4391,7 +4438,7 @@
   DirectParserASTContentNoInitializersHandle(DirectParserASTType type)
       : super("NoInitializers", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentInvalidExpressionHandle
@@ -4399,10 +4446,10 @@
   final Token token;
 
   DirectParserASTContentInvalidExpressionHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("InvalidExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4412,10 +4459,10 @@
   final Token token;
 
   DirectParserASTContentInvalidFunctionBodyHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("InvalidFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4425,10 +4472,10 @@
   final Token token;
 
   DirectParserASTContentInvalidTypeReferenceHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("InvalidTypeReference", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4436,10 +4483,11 @@
 class DirectParserASTContentLabelHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentLabelHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentLabelHandle(DirectParserASTType type,
+      {required this.token})
       : super("Label", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4450,10 +4498,10 @@
   final int labelCount;
 
   DirectParserASTContentLabeledStatementBegin(DirectParserASTType type,
-      {this.token, this.labelCount})
+      {required this.token, required this.labelCount})
       : super("LabeledStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "labelCount": labelCount,
       };
@@ -4463,10 +4511,10 @@
   final int labelCount;
 
   DirectParserASTContentLabeledStatementEnd(DirectParserASTType type,
-      {this.labelCount})
+      {required this.labelCount})
       : super("LabeledStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "labelCount": labelCount,
       };
 }
@@ -4474,10 +4522,11 @@
 class DirectParserASTContentLibraryNameBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentLibraryNameBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentLibraryNameBegin(DirectParserASTType type,
+      {required this.token})
       : super("LibraryName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4487,10 +4536,10 @@
   final Token semicolon;
 
   DirectParserASTContentLibraryNameEnd(DirectParserASTType type,
-      {this.libraryKeyword, this.semicolon})
+      {required this.libraryKeyword, required this.semicolon})
       : super("LibraryName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "libraryKeyword": libraryKeyword,
         "semicolon": semicolon,
       };
@@ -4502,10 +4551,10 @@
   final Token endToken;
 
   DirectParserASTContentLiteralMapEntryHandle(DirectParserASTType type,
-      {this.colon, this.endToken})
+      {required this.colon, required this.endToken})
       : super("LiteralMapEntry", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "colon": colon,
         "endToken": endToken,
       };
@@ -4515,10 +4564,10 @@
   final Token token;
 
   DirectParserASTContentLiteralStringBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("LiteralString", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4526,13 +4575,13 @@
 class DirectParserASTContentInterpolationExpressionHandle
     extends DirectParserASTContent {
   final Token leftBracket;
-  final Token rightBracket;
+  final Token? rightBracket;
 
   DirectParserASTContentInterpolationExpressionHandle(DirectParserASTType type,
-      {this.leftBracket, this.rightBracket})
+      {required this.leftBracket, this.rightBracket})
       : super("InterpolationExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "leftBracket": leftBracket,
         "rightBracket": rightBracket,
       };
@@ -4543,10 +4592,10 @@
   final Token endToken;
 
   DirectParserASTContentLiteralStringEnd(DirectParserASTType type,
-      {this.interpolationCount, this.endToken})
+      {required this.interpolationCount, required this.endToken})
       : super("LiteralString", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "interpolationCount": interpolationCount,
         "endToken": endToken,
       };
@@ -4558,10 +4607,10 @@
   final int literalCount;
 
   DirectParserASTContentStringJuxtapositionHandle(DirectParserASTType type,
-      {this.startToken, this.literalCount})
+      {required this.startToken, required this.literalCount})
       : super("StringJuxtaposition", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "startToken": startToken,
         "literalCount": literalCount,
       };
@@ -4571,17 +4620,17 @@
   DirectParserASTContentMemberBegin(DirectParserASTType type)
       : super("Member", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentInvalidMemberHandle extends DirectParserASTContent {
   final Token endToken;
 
   DirectParserASTContentInvalidMemberHandle(DirectParserASTType type,
-      {this.endToken})
+      {required this.endToken})
       : super("InvalidMember", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "endToken": endToken,
       };
 }
@@ -4590,15 +4639,15 @@
   DirectParserASTContentMemberEnd(DirectParserASTType type)
       : super("Member", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentMethodBegin extends DirectParserASTContent {
-  final Token externalToken;
-  final Token staticToken;
-  final Token covariantToken;
-  final Token varFinalOrConst;
-  final Token getOrSet;
+  final Token? externalToken;
+  final Token? staticToken;
+  final Token? covariantToken;
+  final Token? varFinalOrConst;
+  final Token? getOrSet;
   final Token name;
 
   DirectParserASTContentMethodBegin(DirectParserASTType type,
@@ -4607,10 +4656,10 @@
       this.covariantToken,
       this.varFinalOrConst,
       this.getOrSet,
-      this.name})
+      required this.name})
       : super("Method", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "externalToken": externalToken,
         "staticToken": staticToken,
         "covariantToken": covariantToken,
@@ -4621,21 +4670,21 @@
 }
 
 class DirectParserASTContentClassMethodEnd extends DirectParserASTContent {
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token beginToken;
   final Token beginParam;
-  final Token beginInitializers;
+  final Token? beginInitializers;
   final Token endToken;
 
   DirectParserASTContentClassMethodEnd(DirectParserASTType type,
       {this.getOrSet,
-      this.beginToken,
-      this.beginParam,
+      required this.beginToken,
+      required this.beginParam,
       this.beginInitializers,
-      this.endToken})
+      required this.endToken})
       : super("ClassMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "getOrSet": getOrSet,
         "beginToken": beginToken,
         "beginParam": beginParam,
@@ -4645,21 +4694,21 @@
 }
 
 class DirectParserASTContentMixinMethodEnd extends DirectParserASTContent {
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token beginToken;
   final Token beginParam;
-  final Token beginInitializers;
+  final Token? beginInitializers;
   final Token endToken;
 
   DirectParserASTContentMixinMethodEnd(DirectParserASTType type,
       {this.getOrSet,
-      this.beginToken,
-      this.beginParam,
+      required this.beginToken,
+      required this.beginParam,
       this.beginInitializers,
-      this.endToken})
+      required this.endToken})
       : super("MixinMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "getOrSet": getOrSet,
         "beginToken": beginToken,
         "beginParam": beginParam,
@@ -4669,21 +4718,21 @@
 }
 
 class DirectParserASTContentExtensionMethodEnd extends DirectParserASTContent {
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token beginToken;
   final Token beginParam;
-  final Token beginInitializers;
+  final Token? beginInitializers;
   final Token endToken;
 
   DirectParserASTContentExtensionMethodEnd(DirectParserASTType type,
       {this.getOrSet,
-      this.beginToken,
-      this.beginParam,
+      required this.beginToken,
+      required this.beginParam,
       this.beginInitializers,
-      this.endToken})
+      required this.endToken})
       : super("ExtensionMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "getOrSet": getOrSet,
         "beginToken": beginToken,
         "beginParam": beginParam,
@@ -4693,21 +4742,21 @@
 }
 
 class DirectParserASTContentClassConstructorEnd extends DirectParserASTContent {
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token beginToken;
   final Token beginParam;
-  final Token beginInitializers;
+  final Token? beginInitializers;
   final Token endToken;
 
   DirectParserASTContentClassConstructorEnd(DirectParserASTType type,
       {this.getOrSet,
-      this.beginToken,
-      this.beginParam,
+      required this.beginToken,
+      required this.beginParam,
       this.beginInitializers,
-      this.endToken})
+      required this.endToken})
       : super("ClassConstructor", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "getOrSet": getOrSet,
         "beginToken": beginToken,
         "beginParam": beginParam,
@@ -4717,21 +4766,21 @@
 }
 
 class DirectParserASTContentMixinConstructorEnd extends DirectParserASTContent {
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token beginToken;
   final Token beginParam;
-  final Token beginInitializers;
+  final Token? beginInitializers;
   final Token endToken;
 
   DirectParserASTContentMixinConstructorEnd(DirectParserASTType type,
       {this.getOrSet,
-      this.beginToken,
-      this.beginParam,
+      required this.beginToken,
+      required this.beginParam,
       this.beginInitializers,
-      this.endToken})
+      required this.endToken})
       : super("MixinConstructor", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "getOrSet": getOrSet,
         "beginToken": beginToken,
         "beginParam": beginParam,
@@ -4742,21 +4791,21 @@
 
 class DirectParserASTContentExtensionConstructorEnd
     extends DirectParserASTContent {
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token beginToken;
   final Token beginParam;
-  final Token beginInitializers;
+  final Token? beginInitializers;
   final Token endToken;
 
   DirectParserASTContentExtensionConstructorEnd(DirectParserASTType type,
       {this.getOrSet,
-      this.beginToken,
-      this.beginParam,
+      required this.beginToken,
+      required this.beginParam,
       this.beginInitializers,
-      this.endToken})
+      required this.endToken})
       : super("ExtensionConstructor", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "getOrSet": getOrSet,
         "beginToken": beginToken,
         "beginParam": beginParam,
@@ -4769,10 +4818,10 @@
   final Token token;
 
   DirectParserASTContentMetadataStarBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("MetadataStar", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4780,10 +4829,11 @@
 class DirectParserASTContentMetadataStarEnd extends DirectParserASTContent {
   final int count;
 
-  DirectParserASTContentMetadataStarEnd(DirectParserASTType type, {this.count})
+  DirectParserASTContentMetadataStarEnd(DirectParserASTType type,
+      {required this.count})
       : super("MetadataStar", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
       };
 }
@@ -4791,24 +4841,25 @@
 class DirectParserASTContentMetadataBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentMetadataBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentMetadataBegin(DirectParserASTType type,
+      {required this.token})
       : super("Metadata", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
 
 class DirectParserASTContentMetadataEnd extends DirectParserASTContent {
   final Token beginToken;
-  final Token periodBeforeName;
+  final Token? periodBeforeName;
   final Token endToken;
 
   DirectParserASTContentMetadataEnd(DirectParserASTType type,
-      {this.beginToken, this.periodBeforeName, this.endToken})
+      {required this.beginToken, this.periodBeforeName, required this.endToken})
       : super("Metadata", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "periodBeforeName": periodBeforeName,
         "endToken": endToken,
@@ -4820,10 +4871,10 @@
   final Token token;
 
   DirectParserASTContentOptionalFormalParametersBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("OptionalFormalParameters", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4835,10 +4886,10 @@
   final Token endToken;
 
   DirectParserASTContentOptionalFormalParametersEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken})
+      {required this.count, required this.beginToken, required this.endToken})
       : super("OptionalFormalParameters", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -4848,10 +4899,11 @@
 class DirectParserASTContentPartBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentPartBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentPartBegin(DirectParserASTType type,
+      {required this.token})
       : super("Part", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4861,10 +4913,10 @@
   final Token semicolon;
 
   DirectParserASTContentPartEnd(DirectParserASTType type,
-      {this.partKeyword, this.semicolon})
+      {required this.partKeyword, required this.semicolon})
       : super("Part", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "partKeyword": partKeyword,
         "semicolon": semicolon,
       };
@@ -4873,10 +4925,11 @@
 class DirectParserASTContentPartOfBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentPartOfBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentPartOfBegin(DirectParserASTType type,
+      {required this.token})
       : super("PartOf", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4888,10 +4941,13 @@
   final bool hasName;
 
   DirectParserASTContentPartOfEnd(DirectParserASTType type,
-      {this.partKeyword, this.ofKeyword, this.semicolon, this.hasName})
+      {required this.partKeyword,
+      required this.ofKeyword,
+      required this.semicolon,
+      required this.hasName})
       : super("PartOf", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "partKeyword": partKeyword,
         "ofKeyword": ofKeyword,
         "semicolon": semicolon,
@@ -4904,10 +4960,10 @@
   final Token token;
 
   DirectParserASTContentRedirectingFactoryBodyBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("RedirectingFactoryBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4918,10 +4974,10 @@
   final Token endToken;
 
   DirectParserASTContentRedirectingFactoryBodyEnd(DirectParserASTType type,
-      {this.beginToken, this.endToken})
+      {required this.beginToken, required this.endToken})
       : super("RedirectingFactoryBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "endToken": endToken,
       };
@@ -4932,10 +4988,10 @@
   final Token token;
 
   DirectParserASTContentReturnStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ReturnStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -4946,10 +5002,10 @@
   final Token semicolon;
 
   DirectParserASTContentNativeFunctionBodyHandle(DirectParserASTType type,
-      {this.nativeToken, this.semicolon})
+      {required this.nativeToken, required this.semicolon})
       : super("NativeFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nativeToken": nativeToken,
         "semicolon": semicolon,
       };
@@ -4962,11 +5018,11 @@
 
   DirectParserASTContentNativeFunctionBodyIgnoredHandle(
       DirectParserASTType type,
-      {this.nativeToken,
-      this.semicolon})
+      {required this.nativeToken,
+      required this.semicolon})
       : super("NativeFunctionBodyIgnored", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nativeToken": nativeToken,
         "semicolon": semicolon,
       };
@@ -4979,11 +5035,11 @@
 
   DirectParserASTContentNativeFunctionBodySkippedHandle(
       DirectParserASTType type,
-      {this.nativeToken,
-      this.semicolon})
+      {required this.nativeToken,
+      required this.semicolon})
       : super("NativeFunctionBodySkipped", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nativeToken": nativeToken,
         "semicolon": semicolon,
       };
@@ -4994,10 +5050,10 @@
   final Token semicolon;
 
   DirectParserASTContentEmptyFunctionBodyHandle(DirectParserASTType type,
-      {this.semicolon})
+      {required this.semicolon})
       : super("EmptyFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "semicolon": semicolon,
       };
 }
@@ -5005,13 +5061,13 @@
 class DirectParserASTContentExpressionFunctionBodyHandle
     extends DirectParserASTContent {
   final Token arrowToken;
-  final Token endToken;
+  final Token? endToken;
 
   DirectParserASTContentExpressionFunctionBodyHandle(DirectParserASTType type,
-      {this.arrowToken, this.endToken})
+      {required this.arrowToken, this.endToken})
       : super("ExpressionFunctionBody", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "arrowToken": arrowToken,
         "endToken": endToken,
       };
@@ -5023,10 +5079,12 @@
   final Token endToken;
 
   DirectParserASTContentReturnStatementEnd(DirectParserASTType type,
-      {this.hasExpression, this.beginToken, this.endToken})
+      {required this.hasExpression,
+      required this.beginToken,
+      required this.endToken})
       : super("ReturnStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "hasExpression": hasExpression,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -5038,10 +5096,10 @@
   final Token endToken;
 
   DirectParserASTContentSendHandle(DirectParserASTType type,
-      {this.beginToken, this.endToken})
+      {required this.beginToken, required this.endToken})
       : super("Send", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "endToken": endToken,
       };
@@ -5050,10 +5108,11 @@
 class DirectParserASTContentShowBegin extends DirectParserASTContent {
   final Token showKeyword;
 
-  DirectParserASTContentShowBegin(DirectParserASTType type, {this.showKeyword})
+  DirectParserASTContentShowBegin(DirectParserASTType type,
+      {required this.showKeyword})
       : super("Show", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "showKeyword": showKeyword,
       };
 }
@@ -5061,10 +5120,11 @@
 class DirectParserASTContentShowEnd extends DirectParserASTContent {
   final Token showKeyword;
 
-  DirectParserASTContentShowEnd(DirectParserASTType type, {this.showKeyword})
+  DirectParserASTContentShowEnd(DirectParserASTType type,
+      {required this.showKeyword})
       : super("Show", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "showKeyword": showKeyword,
       };
 }
@@ -5074,10 +5134,10 @@
   final Token token;
 
   DirectParserASTContentSwitchStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("SwitchStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5087,10 +5147,10 @@
   final Token endToken;
 
   DirectParserASTContentSwitchStatementEnd(DirectParserASTType type,
-      {this.switchKeyword, this.endToken})
+      {required this.switchKeyword, required this.endToken})
       : super("SwitchStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "switchKeyword": switchKeyword,
         "endToken": endToken,
       };
@@ -5099,10 +5159,11 @@
 class DirectParserASTContentSwitchBlockBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentSwitchBlockBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentSwitchBlockBegin(DirectParserASTType type,
+      {required this.token})
       : super("SwitchBlock", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5113,10 +5174,12 @@
   final Token endToken;
 
   DirectParserASTContentSwitchBlockEnd(DirectParserASTType type,
-      {this.caseCount, this.beginToken, this.endToken})
+      {required this.caseCount,
+      required this.beginToken,
+      required this.endToken})
       : super("SwitchBlock", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "caseCount": caseCount,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -5127,10 +5190,10 @@
   final Token token;
 
   DirectParserASTContentLiteralSymbolBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("LiteralSymbol", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5140,10 +5203,10 @@
   final int identifierCount;
 
   DirectParserASTContentLiteralSymbolEnd(DirectParserASTType type,
-      {this.hashToken, this.identifierCount})
+      {required this.hashToken, required this.identifierCount})
       : super("LiteralSymbol", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "hashToken": hashToken,
         "identifierCount": identifierCount,
       };
@@ -5155,10 +5218,10 @@
   final Token endToken;
 
   DirectParserASTContentThrowExpressionHandle(DirectParserASTType type,
-      {this.throwToken, this.endToken})
+      {required this.throwToken, required this.endToken})
       : super("ThrowExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "throwToken": throwToken,
         "endToken": endToken,
       };
@@ -5169,10 +5232,10 @@
   final Token token;
 
   DirectParserASTContentRethrowStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("RethrowStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5182,10 +5245,10 @@
   final Token endToken;
 
   DirectParserASTContentRethrowStatementEnd(DirectParserASTType type,
-      {this.rethrowToken, this.endToken})
+      {required this.rethrowToken, required this.endToken})
       : super("RethrowStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "rethrowToken": rethrowToken,
         "endToken": endToken,
       };
@@ -5196,10 +5259,10 @@
   final Token nextToken;
 
   DirectParserASTContentTopLevelDeclarationEnd(DirectParserASTType type,
-      {this.nextToken})
+      {required this.nextToken})
       : super("TopLevelDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nextToken": nextToken,
       };
 }
@@ -5210,10 +5273,10 @@
 
   DirectParserASTContentInvalidTopLevelDeclarationHandle(
       DirectParserASTType type,
-      {this.endToken})
+      {required this.endToken})
       : super("InvalidTopLevelDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "endToken": endToken,
       };
 }
@@ -5222,10 +5285,10 @@
   final Token token;
 
   DirectParserASTContentTopLevelMemberBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("TopLevelMember", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5234,20 +5297,20 @@
   final Token lastConsumed;
 
   DirectParserASTContentFieldsBegin(DirectParserASTType type,
-      {this.lastConsumed})
+      {required this.lastConsumed})
       : super("Fields", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "lastConsumed": lastConsumed,
       };
 }
 
 class DirectParserASTContentTopLevelFieldsEnd extends DirectParserASTContent {
-  final Token externalToken;
-  final Token staticToken;
-  final Token covariantToken;
-  final Token lateToken;
-  final Token varFinalOrConst;
+  final Token? externalToken;
+  final Token? staticToken;
+  final Token? covariantToken;
+  final Token? lateToken;
+  final Token? varFinalOrConst;
   final int count;
   final Token beginToken;
   final Token endToken;
@@ -5258,12 +5321,12 @@
       this.covariantToken,
       this.lateToken,
       this.varFinalOrConst,
-      this.count,
-      this.beginToken,
-      this.endToken})
+      required this.count,
+      required this.beginToken,
+      required this.endToken})
       : super("TopLevelFields", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "externalToken": externalToken,
         "staticToken": staticToken,
         "covariantToken": covariantToken,
@@ -5277,13 +5340,13 @@
 
 class DirectParserASTContentTopLevelMethodBegin extends DirectParserASTContent {
   final Token lastConsumed;
-  final Token externalToken;
+  final Token? externalToken;
 
   DirectParserASTContentTopLevelMethodBegin(DirectParserASTType type,
-      {this.lastConsumed, this.externalToken})
+      {required this.lastConsumed, this.externalToken})
       : super("TopLevelMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "lastConsumed": lastConsumed,
         "externalToken": externalToken,
       };
@@ -5291,14 +5354,14 @@
 
 class DirectParserASTContentTopLevelMethodEnd extends DirectParserASTContent {
   final Token beginToken;
-  final Token getOrSet;
+  final Token? getOrSet;
   final Token endToken;
 
   DirectParserASTContentTopLevelMethodEnd(DirectParserASTType type,
-      {this.beginToken, this.getOrSet, this.endToken})
+      {required this.beginToken, this.getOrSet, required this.endToken})
       : super("TopLevelMethod", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "getOrSet": getOrSet,
         "endToken": endToken,
@@ -5309,10 +5372,10 @@
   final Token token;
 
   DirectParserASTContentTryStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("TryStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5322,10 +5385,10 @@
   final Token colon;
 
   DirectParserASTContentCaseMatchHandle(DirectParserASTType type,
-      {this.caseKeyword, this.colon})
+      {required this.caseKeyword, required this.colon})
       : super("CaseMatch", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "caseKeyword": caseKeyword,
         "colon": colon,
       };
@@ -5334,10 +5397,11 @@
 class DirectParserASTContentCatchClauseBegin extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentCatchClauseBegin(DirectParserASTType type, {this.token})
+  DirectParserASTContentCatchClauseBegin(DirectParserASTType type,
+      {required this.token})
       : super("CatchClause", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5345,24 +5409,25 @@
 class DirectParserASTContentCatchClauseEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentCatchClauseEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentCatchClauseEnd(DirectParserASTType type,
+      {required this.token})
       : super("CatchClause", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
 
 class DirectParserASTContentCatchBlockHandle extends DirectParserASTContent {
-  final Token onKeyword;
-  final Token catchKeyword;
-  final Token comma;
+  final Token? onKeyword;
+  final Token? catchKeyword;
+  final Token? comma;
 
   DirectParserASTContentCatchBlockHandle(DirectParserASTType type,
       {this.onKeyword, this.catchKeyword, this.comma})
       : super("CatchBlock", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "onKeyword": onKeyword,
         "catchKeyword": catchKeyword,
         "comma": comma,
@@ -5373,10 +5438,10 @@
   final Token finallyKeyword;
 
   DirectParserASTContentFinallyBlockHandle(DirectParserASTType type,
-      {this.finallyKeyword})
+      {required this.finallyKeyword})
       : super("FinallyBlock", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "finallyKeyword": finallyKeyword,
       };
 }
@@ -5384,13 +5449,13 @@
 class DirectParserASTContentTryStatementEnd extends DirectParserASTContent {
   final int catchCount;
   final Token tryKeyword;
-  final Token finallyKeyword;
+  final Token? finallyKeyword;
 
   DirectParserASTContentTryStatementEnd(DirectParserASTType type,
-      {this.catchCount, this.tryKeyword, this.finallyKeyword})
+      {required this.catchCount, required this.tryKeyword, this.finallyKeyword})
       : super("TryStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "catchCount": catchCount,
         "tryKeyword": tryKeyword,
         "finallyKeyword": finallyKeyword,
@@ -5399,13 +5464,13 @@
 
 class DirectParserASTContentTypeHandle extends DirectParserASTContent {
   final Token beginToken;
-  final Token questionMark;
+  final Token? questionMark;
 
   DirectParserASTContentTypeHandle(DirectParserASTType type,
-      {this.beginToken, this.questionMark})
+      {required this.beginToken, this.questionMark})
       : super("Type", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "questionMark": questionMark,
       };
@@ -5416,10 +5481,10 @@
   final Token bang;
 
   DirectParserASTContentNonNullAssertExpressionHandle(DirectParserASTType type,
-      {this.bang})
+      {required this.bang})
       : super("NonNullAssertExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "bang": bang,
       };
 }
@@ -5427,10 +5492,11 @@
 class DirectParserASTContentNoNameHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentNoNameHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentNoNameHandle(DirectParserASTType type,
+      {required this.token})
       : super("NoName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5439,23 +5505,23 @@
   final Token beginToken;
 
   DirectParserASTContentFunctionTypeBegin(DirectParserASTType type,
-      {this.beginToken})
+      {required this.beginToken})
       : super("FunctionType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
       };
 }
 
 class DirectParserASTContentFunctionTypeEnd extends DirectParserASTContent {
   final Token functionToken;
-  final Token questionMark;
+  final Token? questionMark;
 
   DirectParserASTContentFunctionTypeEnd(DirectParserASTType type,
-      {this.functionToken, this.questionMark})
+      {required this.functionToken, this.questionMark})
       : super("FunctionType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "functionToken": functionToken,
         "questionMark": questionMark,
       };
@@ -5465,10 +5531,10 @@
   final Token token;
 
   DirectParserASTContentTypeArgumentsBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("TypeArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5479,10 +5545,10 @@
   final Token endToken;
 
   DirectParserASTContentTypeArgumentsEnd(DirectParserASTType type,
-      {this.count, this.beginToken, this.endToken})
+      {required this.count, required this.beginToken, required this.endToken})
       : super("TypeArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "beginToken": beginToken,
         "endToken": endToken,
@@ -5494,10 +5560,10 @@
   final Token token;
 
   DirectParserASTContentInvalidTypeArgumentsHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("InvalidTypeArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5507,10 +5573,10 @@
   final Token token;
 
   DirectParserASTContentNoTypeArgumentsHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoTypeArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5519,10 +5585,10 @@
   final Token token;
 
   DirectParserASTContentTypeVariableBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("TypeVariable", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5533,10 +5599,10 @@
   final int count;
 
   DirectParserASTContentTypeVariablesDefinedHandle(DirectParserASTType type,
-      {this.token, this.count})
+      {required this.token, required this.count})
       : super("TypeVariablesDefined", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "count": count,
       };
@@ -5545,14 +5611,17 @@
 class DirectParserASTContentTypeVariableEnd extends DirectParserASTContent {
   final Token token;
   final int index;
-  final Token extendsOrSuper;
-  final Token variance;
+  final Token? extendsOrSuper;
+  final Token? variance;
 
   DirectParserASTContentTypeVariableEnd(DirectParserASTType type,
-      {this.token, this.index, this.extendsOrSuper, this.variance})
+      {required this.token,
+      required this.index,
+      this.extendsOrSuper,
+      this.variance})
       : super("TypeVariable", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "index": index,
         "extendsOrSuper": extendsOrSuper,
@@ -5564,10 +5633,10 @@
   final Token token;
 
   DirectParserASTContentTypeVariablesBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("TypeVariables", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5577,10 +5646,10 @@
   final Token endToken;
 
   DirectParserASTContentTypeVariablesEnd(DirectParserASTType type,
-      {this.beginToken, this.endToken})
+      {required this.beginToken, required this.endToken})
       : super("TypeVariables", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "endToken": endToken,
       };
@@ -5591,10 +5660,10 @@
   final Token token;
 
   DirectParserASTContentFunctionExpressionBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("FunctionExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5605,10 +5674,10 @@
   final Token token;
 
   DirectParserASTContentFunctionExpressionEnd(DirectParserASTType type,
-      {this.beginToken, this.token})
+      {required this.beginToken, required this.token})
       : super("FunctionExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "token": token,
       };
@@ -5617,14 +5686,14 @@
 class DirectParserASTContentVariablesDeclarationBegin
     extends DirectParserASTContent {
   final Token token;
-  final Token lateToken;
-  final Token varFinalOrConst;
+  final Token? lateToken;
+  final Token? varFinalOrConst;
 
   DirectParserASTContentVariablesDeclarationBegin(DirectParserASTType type,
-      {this.token, this.lateToken, this.varFinalOrConst})
+      {required this.token, this.lateToken, this.varFinalOrConst})
       : super("VariablesDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "lateToken": lateToken,
         "varFinalOrConst": varFinalOrConst,
@@ -5634,13 +5703,13 @@
 class DirectParserASTContentVariablesDeclarationEnd
     extends DirectParserASTContent {
   final int count;
-  final Token endToken;
+  final Token? endToken;
 
   DirectParserASTContentVariablesDeclarationEnd(DirectParserASTType type,
-      {this.count, this.endToken})
+      {required this.count, this.endToken})
       : super("VariablesDeclaration", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "endToken": endToken,
       };
@@ -5650,10 +5719,10 @@
   final Token token;
 
   DirectParserASTContentWhileStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("WhileStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5663,10 +5732,10 @@
   final Token endToken;
 
   DirectParserASTContentWhileStatementEnd(DirectParserASTType type,
-      {this.whileKeyword, this.endToken})
+      {required this.whileKeyword, required this.endToken})
       : super("WhileStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "whileKeyword": whileKeyword,
         "endToken": endToken,
       };
@@ -5676,10 +5745,10 @@
   final Token operator;
 
   DirectParserASTContentAsOperatorTypeBegin(DirectParserASTType type,
-      {this.operator})
+      {required this.operator})
       : super("AsOperatorType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operator": operator,
       };
 }
@@ -5688,10 +5757,10 @@
   final Token operator;
 
   DirectParserASTContentAsOperatorTypeEnd(DirectParserASTType type,
-      {this.operator})
+      {required this.operator})
       : super("AsOperatorType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operator": operator,
       };
 }
@@ -5700,10 +5769,10 @@
   final Token operator;
 
   DirectParserASTContentAsOperatorHandle(DirectParserASTType type,
-      {this.operator})
+      {required this.operator})
       : super("AsOperator", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operator": operator,
       };
 }
@@ -5713,10 +5782,10 @@
   final Token token;
 
   DirectParserASTContentAssignmentExpressionHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("AssignmentExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5726,10 +5795,10 @@
   final Token token;
 
   DirectParserASTContentBinaryExpressionBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("BinaryExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5738,10 +5807,10 @@
   final Token token;
 
   DirectParserASTContentBinaryExpressionEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("BinaryExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5751,10 +5820,10 @@
   final Token token;
 
   DirectParserASTContentEndingBinaryExpressionHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("EndingBinaryExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5764,10 +5833,10 @@
   final Token question;
 
   DirectParserASTContentConditionalExpressionBegin(DirectParserASTType type,
-      {this.question})
+      {required this.question})
       : super("ConditionalExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "question": question,
       };
 }
@@ -5778,7 +5847,7 @@
       DirectParserASTType type)
       : super("ConditionalExpressionColon", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentConditionalExpressionEnd
@@ -5787,10 +5856,10 @@
   final Token colon;
 
   DirectParserASTContentConditionalExpressionEnd(DirectParserASTType type,
-      {this.question, this.colon})
+      {required this.question, required this.colon})
       : super("ConditionalExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "question": question,
         "colon": colon,
       };
@@ -5801,10 +5870,10 @@
   final Token constKeyword;
 
   DirectParserASTContentConstExpressionBegin(DirectParserASTType type,
-      {this.constKeyword})
+      {required this.constKeyword})
       : super("ConstExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "constKeyword": constKeyword,
       };
 }
@@ -5813,10 +5882,10 @@
   final Token token;
 
   DirectParserASTContentConstExpressionEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ConstExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5825,23 +5894,23 @@
   final Token constKeyword;
 
   DirectParserASTContentConstFactoryHandle(DirectParserASTType type,
-      {this.constKeyword})
+      {required this.constKeyword})
       : super("ConstFactory", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "constKeyword": constKeyword,
       };
 }
 
 class DirectParserASTContentForControlFlowBegin extends DirectParserASTContent {
-  final Token awaitToken;
+  final Token? awaitToken;
   final Token forToken;
 
   DirectParserASTContentForControlFlowBegin(DirectParserASTType type,
-      {this.awaitToken, this.forToken})
+      {this.awaitToken, required this.forToken})
       : super("ForControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "awaitToken": awaitToken,
         "forToken": forToken,
       };
@@ -5851,10 +5920,10 @@
   final Token token;
 
   DirectParserASTContentForControlFlowEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5863,10 +5932,10 @@
   final Token token;
 
   DirectParserASTContentForInControlFlowEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ForInControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5875,10 +5944,10 @@
   final Token ifToken;
 
   DirectParserASTContentIfControlFlowBegin(DirectParserASTType type,
-      {this.ifToken})
+      {required this.ifToken})
       : super("IfControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "ifToken": ifToken,
       };
 }
@@ -5888,10 +5957,10 @@
   final Token token;
 
   DirectParserASTContentThenControlFlowHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ThenControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5901,10 +5970,10 @@
   final Token elseToken;
 
   DirectParserASTContentElseControlFlowHandle(DirectParserASTType type,
-      {this.elseToken})
+      {required this.elseToken})
       : super("ElseControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "elseToken": elseToken,
       };
 }
@@ -5912,10 +5981,11 @@
 class DirectParserASTContentIfControlFlowEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentIfControlFlowEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentIfControlFlowEnd(DirectParserASTType type,
+      {required this.token})
       : super("IfControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5925,10 +5995,10 @@
   final Token token;
 
   DirectParserASTContentIfElseControlFlowEnd(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("IfElseControlFlow", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5938,10 +6008,10 @@
   final Token spreadToken;
 
   DirectParserASTContentSpreadExpressionHandle(DirectParserASTType type,
-      {this.spreadToken})
+      {required this.spreadToken})
       : super("SpreadExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "spreadToken": spreadToken,
       };
 }
@@ -5952,10 +6022,10 @@
 
   DirectParserASTContentFunctionTypedFormalParameterBegin(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("FunctionTypedFormalParameter", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -5963,15 +6033,15 @@
 class DirectParserASTContentFunctionTypedFormalParameterEnd
     extends DirectParserASTContent {
   final Token nameToken;
-  final Token question;
+  final Token? question;
 
   DirectParserASTContentFunctionTypedFormalParameterEnd(
       DirectParserASTType type,
-      {this.nameToken,
+      {required this.nameToken,
       this.question})
       : super("FunctionTypedFormalParameter", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nameToken": nameToken,
         "question": question,
       };
@@ -5982,10 +6052,10 @@
   final IdentifierContext context;
 
   DirectParserASTContentIdentifierHandle(DirectParserASTType type,
-      {this.token, this.context})
+      {required this.token, required this.context})
       : super("Identifier", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "context": context,
       };
@@ -5993,15 +6063,17 @@
 
 class DirectParserASTContentIndexedExpressionHandle
     extends DirectParserASTContent {
-  final Token question;
+  final Token? question;
   final Token openSquareBracket;
   final Token closeSquareBracket;
 
   DirectParserASTContentIndexedExpressionHandle(DirectParserASTType type,
-      {this.question, this.openSquareBracket, this.closeSquareBracket})
+      {this.question,
+      required this.openSquareBracket,
+      required this.closeSquareBracket})
       : super("IndexedExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "question": question,
         "openSquareBracket": openSquareBracket,
         "closeSquareBracket": closeSquareBracket,
@@ -6012,10 +6084,10 @@
   final Token operator;
 
   DirectParserASTContentIsOperatorTypeBegin(DirectParserASTType type,
-      {this.operator})
+      {required this.operator})
       : super("IsOperatorType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operator": operator,
       };
 }
@@ -6024,23 +6096,23 @@
   final Token operator;
 
   DirectParserASTContentIsOperatorTypeEnd(DirectParserASTType type,
-      {this.operator})
+      {required this.operator})
       : super("IsOperatorType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operator": operator,
       };
 }
 
 class DirectParserASTContentIsOperatorHandle extends DirectParserASTContent {
   final Token isOperator;
-  final Token not;
+  final Token? not;
 
   DirectParserASTContentIsOperatorHandle(DirectParserASTType type,
-      {this.isOperator, this.not})
+      {required this.isOperator, this.not})
       : super("IsOperator", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "isOperator": isOperator,
         "not": not,
       };
@@ -6050,10 +6122,10 @@
   final Token token;
 
   DirectParserASTContentLiteralBoolHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("LiteralBool", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6065,10 +6137,12 @@
   final Token endToken;
 
   DirectParserASTContentBreakStatementHandle(DirectParserASTType type,
-      {this.hasTarget, this.breakKeyword, this.endToken})
+      {required this.hasTarget,
+      required this.breakKeyword,
+      required this.endToken})
       : super("BreakStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "hasTarget": hasTarget,
         "breakKeyword": breakKeyword,
         "endToken": endToken,
@@ -6082,10 +6156,12 @@
   final Token endToken;
 
   DirectParserASTContentContinueStatementHandle(DirectParserASTType type,
-      {this.hasTarget, this.continueKeyword, this.endToken})
+      {required this.hasTarget,
+      required this.continueKeyword,
+      required this.endToken})
       : super("ContinueStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "hasTarget": hasTarget,
         "continueKeyword": continueKeyword,
         "endToken": endToken,
@@ -6097,10 +6173,10 @@
   final Token token;
 
   DirectParserASTContentEmptyStatementHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("EmptyStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6110,10 +6186,10 @@
   final Assert kind;
 
   DirectParserASTContentAssertBegin(DirectParserASTType type,
-      {this.assertKeyword, this.kind})
+      {required this.assertKeyword, required this.kind})
       : super("Assert", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "assertKeyword": assertKeyword,
         "kind": kind,
       };
@@ -6123,18 +6199,18 @@
   final Token assertKeyword;
   final Assert kind;
   final Token leftParenthesis;
-  final Token commaToken;
+  final Token? commaToken;
   final Token semicolonToken;
 
   DirectParserASTContentAssertEnd(DirectParserASTType type,
-      {this.assertKeyword,
-      this.kind,
-      this.leftParenthesis,
+      {required this.assertKeyword,
+      required this.kind,
+      required this.leftParenthesis,
       this.commaToken,
-      this.semicolonToken})
+      required this.semicolonToken})
       : super("Assert", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "assertKeyword": assertKeyword,
         "kind": kind,
         "leftParenthesis": leftParenthesis,
@@ -6147,10 +6223,10 @@
   final Token token;
 
   DirectParserASTContentLiteralDoubleHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("LiteralDouble", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6158,10 +6234,11 @@
 class DirectParserASTContentLiteralIntHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentLiteralIntHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentLiteralIntHandle(DirectParserASTType type,
+      {required this.token})
       : super("LiteralInt", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6169,14 +6246,17 @@
 class DirectParserASTContentLiteralListHandle extends DirectParserASTContent {
   final int count;
   final Token leftBracket;
-  final Token constKeyword;
+  final Token? constKeyword;
   final Token rightBracket;
 
   DirectParserASTContentLiteralListHandle(DirectParserASTType type,
-      {this.count, this.leftBracket, this.constKeyword, this.rightBracket})
+      {required this.count,
+      required this.leftBracket,
+      this.constKeyword,
+      required this.rightBracket})
       : super("LiteralList", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "leftBracket": leftBracket,
         "constKeyword": constKeyword,
@@ -6188,19 +6268,19 @@
     extends DirectParserASTContent {
   final int count;
   final Token leftBrace;
-  final Token constKeyword;
+  final Token? constKeyword;
   final Token rightBrace;
   final bool hasSetEntry;
 
   DirectParserASTContentLiteralSetOrMapHandle(DirectParserASTType type,
-      {this.count,
-      this.leftBrace,
+      {required this.count,
+      required this.leftBrace,
       this.constKeyword,
-      this.rightBrace,
-      this.hasSetEntry})
+      required this.rightBrace,
+      required this.hasSetEntry})
       : super("LiteralSetOrMap", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "count": count,
         "leftBrace": leftBrace,
         "constKeyword": constKeyword,
@@ -6213,10 +6293,10 @@
   final Token token;
 
   DirectParserASTContentLiteralNullHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("LiteralNull", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6226,10 +6306,10 @@
   final bool hasName;
 
   DirectParserASTContentNativeClauseHandle(DirectParserASTType type,
-      {this.nativeToken, this.hasName})
+      {required this.nativeToken, required this.hasName})
       : super("NativeClause", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "nativeToken": nativeToken,
         "hasName": hasName,
       };
@@ -6239,10 +6319,10 @@
   final Token colon;
 
   DirectParserASTContentNamedArgumentHandle(DirectParserASTType type,
-      {this.colon})
+      {required this.colon})
       : super("NamedArgument", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "colon": colon,
       };
 }
@@ -6251,10 +6331,10 @@
   final Token token;
 
   DirectParserASTContentNewExpressionBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NewExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6262,10 +6342,11 @@
 class DirectParserASTContentNewExpressionEnd extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentNewExpressionEnd(DirectParserASTType type, {this.token})
+  DirectParserASTContentNewExpressionEnd(DirectParserASTType type,
+      {required this.token})
       : super("NewExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6274,10 +6355,10 @@
   final Token token;
 
   DirectParserASTContentNoArgumentsHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6288,10 +6369,10 @@
 
   DirectParserASTContentNoConstructorReferenceContinuationAfterTypeArgumentsHandle(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoConstructorReferenceContinuationAfterTypeArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6300,10 +6381,10 @@
   final Token lastConsumed;
 
   DirectParserASTContentNoTypeHandle(DirectParserASTType type,
-      {this.lastConsumed})
+      {required this.lastConsumed})
       : super("NoType", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "lastConsumed": lastConsumed,
       };
 }
@@ -6313,10 +6394,10 @@
   final Token token;
 
   DirectParserASTContentNoTypeVariablesHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("NoTypeVariables", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6324,10 +6405,11 @@
 class DirectParserASTContentOperatorHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentOperatorHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentOperatorHandle(DirectParserASTType type,
+      {required this.token})
       : super("Operator", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6335,10 +6417,11 @@
 class DirectParserASTContentSymbolVoidHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentSymbolVoidHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentSymbolVoidHandle(DirectParserASTType type,
+      {required this.token})
       : super("SymbolVoid", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6348,10 +6431,10 @@
   final Token token;
 
   DirectParserASTContentOperatorNameHandle(DirectParserASTType type,
-      {this.operatorKeyword, this.token})
+      {required this.operatorKeyword, required this.token})
       : super("OperatorName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operatorKeyword": operatorKeyword,
         "token": token,
       };
@@ -6363,10 +6446,10 @@
   final Token token;
 
   DirectParserASTContentInvalidOperatorNameHandle(DirectParserASTType type,
-      {this.operatorKeyword, this.token})
+      {required this.operatorKeyword, required this.token})
       : super("InvalidOperatorName", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "operatorKeyword": operatorKeyword,
         "token": token,
       };
@@ -6377,10 +6460,10 @@
   final Token token;
 
   DirectParserASTContentParenthesizedConditionHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ParenthesizedCondition", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6390,10 +6473,10 @@
   final Token token;
 
   DirectParserASTContentParenthesizedExpressionHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("ParenthesizedExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6401,10 +6484,11 @@
 class DirectParserASTContentQualifiedHandle extends DirectParserASTContent {
   final Token period;
 
-  DirectParserASTContentQualifiedHandle(DirectParserASTType type, {this.period})
+  DirectParserASTContentQualifiedHandle(DirectParserASTType type,
+      {required this.period})
       : super("Qualified", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "period": period,
       };
 }
@@ -6412,10 +6496,11 @@
 class DirectParserASTContentStringPartHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentStringPartHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentStringPartHandle(DirectParserASTType type,
+      {required this.token})
       : super("StringPart", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6426,10 +6511,10 @@
   final IdentifierContext context;
 
   DirectParserASTContentSuperExpressionHandle(DirectParserASTType type,
-      {this.token, this.context})
+      {required this.token, required this.context})
       : super("SuperExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "context": context,
       };
@@ -6441,10 +6526,12 @@
   final Token firstToken;
 
   DirectParserASTContentSwitchCaseBegin(DirectParserASTType type,
-      {this.labelCount, this.expressionCount, this.firstToken})
+      {required this.labelCount,
+      required this.expressionCount,
+      required this.firstToken})
       : super("SwitchCase", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "labelCount": labelCount,
         "expressionCount": expressionCount,
         "firstToken": firstToken,
@@ -6454,23 +6541,23 @@
 class DirectParserASTContentSwitchCaseEnd extends DirectParserASTContent {
   final int labelCount;
   final int expressionCount;
-  final Token defaultKeyword;
-  final Token colonAfterDefault;
+  final Token? defaultKeyword;
+  final Token? colonAfterDefault;
   final int statementCount;
   final Token firstToken;
   final Token endToken;
 
   DirectParserASTContentSwitchCaseEnd(DirectParserASTType type,
-      {this.labelCount,
-      this.expressionCount,
+      {required this.labelCount,
+      required this.expressionCount,
       this.defaultKeyword,
       this.colonAfterDefault,
-      this.statementCount,
-      this.firstToken,
-      this.endToken})
+      required this.statementCount,
+      required this.firstToken,
+      required this.endToken})
       : super("SwitchCase", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "labelCount": labelCount,
         "expressionCount": expressionCount,
         "defaultKeyword": defaultKeyword,
@@ -6487,10 +6574,10 @@
   final IdentifierContext context;
 
   DirectParserASTContentThisExpressionHandle(DirectParserASTType type,
-      {this.token, this.context})
+      {required this.token, required this.context})
       : super("ThisExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "context": context,
       };
@@ -6502,10 +6589,10 @@
 
   DirectParserASTContentUnaryPostfixAssignmentExpressionHandle(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("UnaryPostfixAssignmentExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6515,10 +6602,10 @@
   final Token token;
 
   DirectParserASTContentUnaryPrefixExpressionHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("UnaryPrefixExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6529,10 +6616,10 @@
 
   DirectParserASTContentUnaryPrefixAssignmentExpressionHandle(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("UnaryPrefixAssignmentExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6543,7 +6630,7 @@
       DirectParserASTType type)
       : super("FormalParameterDefaultValueExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentFormalParameterDefaultValueExpressionEnd
@@ -6552,7 +6639,7 @@
       DirectParserASTType type)
       : super("FormalParameterDefaultValueExpression", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
 
 class DirectParserASTContentValuedFormalParameterHandle
@@ -6561,10 +6648,10 @@
   final Token token;
 
   DirectParserASTContentValuedFormalParameterHandle(DirectParserASTType type,
-      {this.equals, this.token})
+      {required this.equals, required this.token})
       : super("ValuedFormalParameter", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "equals": equals,
         "token": token,
       };
@@ -6576,10 +6663,10 @@
 
   DirectParserASTContentFormalParameterWithoutValueHandle(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("FormalParameterWithoutValue", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6588,10 +6675,10 @@
   final Token token;
 
   DirectParserASTContentVoidKeywordHandle(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("VoidKeyword", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6602,10 +6689,10 @@
 
   DirectParserASTContentVoidKeywordWithTypeArgumentsHandle(
       DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("VoidKeywordWithTypeArguments", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6614,24 +6701,24 @@
   final Token token;
 
   DirectParserASTContentYieldStatementBegin(DirectParserASTType type,
-      {this.token})
+      {required this.token})
       : super("YieldStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
 
 class DirectParserASTContentYieldStatementEnd extends DirectParserASTContent {
   final Token yieldToken;
-  final Token starToken;
+  final Token? starToken;
   final Token endToken;
 
   DirectParserASTContentYieldStatementEnd(DirectParserASTType type,
-      {this.yieldToken, this.starToken, this.endToken})
+      {required this.yieldToken, this.starToken, required this.endToken})
       : super("YieldStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "yieldToken": yieldToken,
         "starToken": starToken,
         "endToken": endToken,
@@ -6641,15 +6728,18 @@
 class DirectParserASTContentInvalidYieldStatementEnd
     extends DirectParserASTContent {
   final Token beginToken;
-  final Token starToken;
+  final Token? starToken;
   final Token endToken;
   final MessageCode errorCode;
 
   DirectParserASTContentInvalidYieldStatementEnd(DirectParserASTType type,
-      {this.beginToken, this.starToken, this.endToken, this.errorCode})
+      {required this.beginToken,
+      this.starToken,
+      required this.endToken,
+      required this.errorCode})
       : super("InvalidYieldStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "beginToken": beginToken,
         "starToken": starToken,
         "endToken": endToken,
@@ -6664,10 +6754,10 @@
   final Token endToken;
 
   DirectParserASTContentRecoverableErrorHandle(DirectParserASTType type,
-      {this.message, this.startToken, this.endToken})
+      {required this.message, required this.startToken, required this.endToken})
       : super("RecoverableError", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "message": message,
         "startToken": startToken,
         "endToken": endToken,
@@ -6677,10 +6767,11 @@
 class DirectParserASTContentErrorTokenHandle extends DirectParserASTContent {
   final ErrorToken token;
 
-  DirectParserASTContentErrorTokenHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentErrorTokenHandle(DirectParserASTType type,
+      {required this.token})
       : super("ErrorToken", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6692,10 +6783,13 @@
   final int length;
 
   DirectParserASTContentUnescapeErrorHandle(DirectParserASTType type,
-      {this.message, this.location, this.stringOffset, this.length})
+      {required this.message,
+      required this.location,
+      required this.stringOffset,
+      required this.length})
       : super("UnescapeError", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "message": message,
         "location": location,
         "stringOffset": stringOffset,
@@ -6709,10 +6803,10 @@
   final Message message;
 
   DirectParserASTContentInvalidStatementHandle(DirectParserASTType type,
-      {this.token, this.message})
+      {required this.token, required this.message})
       : super("InvalidStatement", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
         "message": message,
       };
@@ -6721,10 +6815,11 @@
 class DirectParserASTContentScriptHandle extends DirectParserASTContent {
   final Token token;
 
-  DirectParserASTContentScriptHandle(DirectParserASTType type, {this.token})
+  DirectParserASTContentScriptHandle(DirectParserASTType type,
+      {required this.token})
       : super("Script", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "token": token,
       };
 }
@@ -6735,10 +6830,10 @@
   final int referenceOffset;
 
   DirectParserASTContentCommentReferenceTextHandle(DirectParserASTType type,
-      {this.referenceSource, this.referenceOffset})
+      {required this.referenceSource, required this.referenceOffset})
       : super("CommentReferenceText", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "referenceSource": referenceSource,
         "referenceOffset": referenceOffset,
       };
@@ -6746,16 +6841,16 @@
 
 class DirectParserASTContentCommentReferenceHandle
     extends DirectParserASTContent {
-  final Token newKeyword;
-  final Token prefix;
-  final Token period;
+  final Token? newKeyword;
+  final Token? prefix;
+  final Token? period;
   final Token token;
 
   DirectParserASTContentCommentReferenceHandle(DirectParserASTType type,
-      {this.newKeyword, this.prefix, this.period, this.token})
+      {this.newKeyword, this.prefix, this.period, required this.token})
       : super("CommentReference", type);
 
-  Map<String, Object> get deprecatedArguments => {
+  Map<String, Object?> get deprecatedArguments => {
         "newKeyword": newKeyword,
         "prefix": prefix,
         "period": period,
@@ -6768,5 +6863,5 @@
   DirectParserASTContentNoCommentReferenceHandle(DirectParserASTType type)
       : super("NoCommentReference", type);
 
-  Map<String, Object> get deprecatedArguments => {};
+  Map<String, Object?> get deprecatedArguments => {};
 }
diff --git a/pkg/front_end/testcases/incremental/regress_46004.yaml b/pkg/front_end/testcases/incremental/regress_46004.yaml
new file mode 100644
index 0000000..115477f
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/regress_46004.yaml
@@ -0,0 +1,35 @@
+# Copyright (c) 2021, 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.md file.
+
+type: newworld
+worlds:
+  - entry: main.dart
+    experiments: non-nullable
+    sources:
+      main.dart: |
+        import 'dart:ffi';
+        import 'lib.dart';
+        class X extends Struct {
+          external COMObject xx;
+        }
+      lib.dart: |
+        import 'dart:ffi';
+
+        class COMObject extends Struct {
+          external Pointer<IntPtr> lpVtbl;
+
+          // This should not be interpreted as a native field.
+          // Neither the first nor the second compilation.
+          Pointer<IntPtr> get vtable => Pointer.fromAddress(lpVtbl.value);
+        }
+    expectedLibraryCount: 2
+
+  - entry: main.dart
+    experiments: non-nullable
+    worldType: updated
+    expectInitializeFromDill: false
+    invalidate:
+      - main.dart
+    expectedLibraryCount: 2
+    expectsRebuildBodiesOnly: false
diff --git a/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect
new file mode 100644
index 0000000..7918e0b
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect
@@ -0,0 +1,68 @@
+main = <No Member>;
+library from "org-dartlang-test:///lib.dart" as lib {
+
+  import "dart:ffi";
+
+  @#C6
+  class COMObject extends dart.ffi::Struct {
+    synthetic constructor •() → lib::COMObject
+      : super dart.ffi::Struct::•()
+      ;
+    constructor #fromTypedDataBase(dart.core::Object #typedDataBase) → lib::COMObject
+      : super dart.ffi::Struct::_fromTypedDataBase(#typedDataBase)
+      ;
+    get lpVtbl() → dart.ffi::Pointer<dart.ffi::IntPtr>
+      return dart.ffi::_fromAddress<dart.ffi::IntPtr>(dart.ffi::_loadIntPtr(this.{dart.ffi::_Compound::_typedDataBase}, (#C8).{dart.core::List::[]}(dart.ffi::_abi())));
+    set lpVtbl(dart.ffi::Pointer<dart.ffi::IntPtr> #externalFieldValue) → void
+      return dart.ffi::_storeIntPtr(this.{dart.ffi::_Compound::_typedDataBase}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #externalFieldValue.{dart.ffi::Pointer::address});
+    get vtable() → dart.ffi::Pointer<dart.ffi::IntPtr>
+      return dart.ffi::Pointer::fromAddress<dart.ffi::IntPtr>(dart.ffi::IntPtrPointer|get#value(this.{lib::COMObject::lpVtbl}));
+    @#C10
+    static get #sizeOf() → dart.core::int*
+      return (#C13).{dart.core::List::[]}(dart.ffi::_abi());
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "dart:ffi";
+  import "org-dartlang-test:///lib.dart";
+
+  @#C17
+  class X extends dart.ffi::Struct {
+    synthetic constructor •() → main::X
+      : super dart.ffi::Struct::•()
+      ;
+    constructor #fromTypedDataBase(dart.core::Object #typedDataBase) → main::X
+      : super dart.ffi::Struct::_fromTypedDataBase(#typedDataBase)
+      ;
+    get xx() → lib::COMObject
+      return new lib::COMObject::#fromTypedDataBase( block {
+        dart.core::Object #typedDataBase = this.{dart.ffi::_Compound::_typedDataBase};
+        dart.core::int #offset = (#C8).{dart.core::List::[]}(dart.ffi::_abi());
+      } =>#typedDataBase is dart.ffi::Pointer<dynamic> ?{dart.core::Object} dart.ffi::_fromAddress<lib::COMObject>(#typedDataBase.{dart.ffi::Pointer::address}.{dart.core::num::+}(#offset)) : let dart.typed_data::TypedData #typedData = dart._internal::unsafeCast<dart.typed_data::TypedData>(#typedDataBase) in #typedData.{dart.typed_data::TypedData::buffer}.{dart.typed_data::ByteBuffer::asUint8List}(#typedData.{dart.typed_data::TypedData::offsetInBytes}.{dart.core::num::+}(#offset), (#C13).{dart.core::List::[]}(dart.ffi::_abi())));
+    set xx(lib::COMObject #externalFieldValue) → void
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}, #C7, (#C13).{dart.core::List::[]}(dart.ffi::_abi()));
+    @#C10
+    static get #sizeOf() → dart.core::int*
+      return (#C13).{dart.core::List::[]}(dart.ffi::_abi());
+  }
+}
+constants  {
+  #C1 = "vm:ffi:struct-fields"
+  #C2 = TypeLiteralConstant(dart.ffi::Pointer<dart.ffi::NativeType>)
+  #C3 = <dart.core::Type>[#C2]
+  #C4 = null
+  #C5 = dart.ffi::_FfiStructLayout {fieldTypes:#C3, packing:#C4}
+  #C6 = dart.core::pragma {name:#C1, options:#C5}
+  #C7 = 0
+  #C8 = <dart.core::int*>[#C7, #C7, #C7]
+  #C9 = "vm:prefer-inline"
+  #C10 = dart.core::pragma {name:#C9, options:#C4}
+  #C11 = 8
+  #C12 = 4
+  #C13 = <dart.core::int*>[#C11, #C12, #C12]
+  #C14 = TypeLiteralConstant(lib::COMObject)
+  #C15 = <dart.core::Type>[#C14]
+  #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
+  #C17 = dart.core::pragma {name:#C1, options:#C16}
+}
diff --git a/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect
new file mode 100644
index 0000000..7918e0b
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect
@@ -0,0 +1,68 @@
+main = <No Member>;
+library from "org-dartlang-test:///lib.dart" as lib {
+
+  import "dart:ffi";
+
+  @#C6
+  class COMObject extends dart.ffi::Struct {
+    synthetic constructor •() → lib::COMObject
+      : super dart.ffi::Struct::•()
+      ;
+    constructor #fromTypedDataBase(dart.core::Object #typedDataBase) → lib::COMObject
+      : super dart.ffi::Struct::_fromTypedDataBase(#typedDataBase)
+      ;
+    get lpVtbl() → dart.ffi::Pointer<dart.ffi::IntPtr>
+      return dart.ffi::_fromAddress<dart.ffi::IntPtr>(dart.ffi::_loadIntPtr(this.{dart.ffi::_Compound::_typedDataBase}, (#C8).{dart.core::List::[]}(dart.ffi::_abi())));
+    set lpVtbl(dart.ffi::Pointer<dart.ffi::IntPtr> #externalFieldValue) → void
+      return dart.ffi::_storeIntPtr(this.{dart.ffi::_Compound::_typedDataBase}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #externalFieldValue.{dart.ffi::Pointer::address});
+    get vtable() → dart.ffi::Pointer<dart.ffi::IntPtr>
+      return dart.ffi::Pointer::fromAddress<dart.ffi::IntPtr>(dart.ffi::IntPtrPointer|get#value(this.{lib::COMObject::lpVtbl}));
+    @#C10
+    static get #sizeOf() → dart.core::int*
+      return (#C13).{dart.core::List::[]}(dart.ffi::_abi());
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "dart:ffi";
+  import "org-dartlang-test:///lib.dart";
+
+  @#C17
+  class X extends dart.ffi::Struct {
+    synthetic constructor •() → main::X
+      : super dart.ffi::Struct::•()
+      ;
+    constructor #fromTypedDataBase(dart.core::Object #typedDataBase) → main::X
+      : super dart.ffi::Struct::_fromTypedDataBase(#typedDataBase)
+      ;
+    get xx() → lib::COMObject
+      return new lib::COMObject::#fromTypedDataBase( block {
+        dart.core::Object #typedDataBase = this.{dart.ffi::_Compound::_typedDataBase};
+        dart.core::int #offset = (#C8).{dart.core::List::[]}(dart.ffi::_abi());
+      } =>#typedDataBase is dart.ffi::Pointer<dynamic> ?{dart.core::Object} dart.ffi::_fromAddress<lib::COMObject>(#typedDataBase.{dart.ffi::Pointer::address}.{dart.core::num::+}(#offset)) : let dart.typed_data::TypedData #typedData = dart._internal::unsafeCast<dart.typed_data::TypedData>(#typedDataBase) in #typedData.{dart.typed_data::TypedData::buffer}.{dart.typed_data::ByteBuffer::asUint8List}(#typedData.{dart.typed_data::TypedData::offsetInBytes}.{dart.core::num::+}(#offset), (#C13).{dart.core::List::[]}(dart.ffi::_abi())));
+    set xx(lib::COMObject #externalFieldValue) → void
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}, #C7, (#C13).{dart.core::List::[]}(dart.ffi::_abi()));
+    @#C10
+    static get #sizeOf() → dart.core::int*
+      return (#C13).{dart.core::List::[]}(dart.ffi::_abi());
+  }
+}
+constants  {
+  #C1 = "vm:ffi:struct-fields"
+  #C2 = TypeLiteralConstant(dart.ffi::Pointer<dart.ffi::NativeType>)
+  #C3 = <dart.core::Type>[#C2]
+  #C4 = null
+  #C5 = dart.ffi::_FfiStructLayout {fieldTypes:#C3, packing:#C4}
+  #C6 = dart.core::pragma {name:#C1, options:#C5}
+  #C7 = 0
+  #C8 = <dart.core::int*>[#C7, #C7, #C7]
+  #C9 = "vm:prefer-inline"
+  #C10 = dart.core::pragma {name:#C9, options:#C4}
+  #C11 = 8
+  #C12 = 4
+  #C13 = <dart.core::int*>[#C11, #C12, #C12]
+  #C14 = TypeLiteralConstant(lib::COMObject)
+  #C15 = <dart.core::Type>[#C14]
+  #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
+  #C17 = dart.core::pragma {name:#C1, options:#C16}
+}
diff --git a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
index e7cdb79..5c9509b 100644
--- a/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
+++ b/pkg/front_end/tool/_fasta/direct_parser_ast_helper_creator.dart
@@ -2,8 +2,6 @@
 // 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.
 
-// @dart=2.9
-
 import 'dart:io';
 import 'dart:typed_data';
 
@@ -12,7 +10,7 @@
 import 'package:_fe_analyzer_shared/src/scanner/token.dart';
 import 'package:dart_style/dart_style.dart' show DartFormatter;
 
-StringSink out;
+late StringSink out;
 
 main(List<String> args) {
   if (args.contains("--stdout")) {
@@ -61,8 +59,8 @@
 abstract class DirectParserASTContent {
   final String what;
   final DirectParserASTType type;
-  Map<String, Object> get deprecatedArguments;
-  List<DirectParserASTContent> children;
+  Map<String, Object?> get deprecatedArguments;
+  List<DirectParserASTContent>? children;
 
   DirectParserASTContent(this.what, this.type);
 
@@ -98,13 +96,13 @@
 
 class ParserCreatorListener extends Listener {
   bool insideListenerClass = false;
-  String currentMethodName;
-  String latestSeenParameterTypeToken;
-  List<String> parameters = <String>[];
-  List<String> parameterTypes = <String>[];
-  StringBuffer newClasses = new StringBuffer();
+  String? currentMethodName;
+  String? latestSeenParameterTypeToken;
+  String? latestSeenParameterTypeTokenQuestion;
+  final List<Parameter> parameters = <Parameter>[];
+  final StringBuffer newClasses = new StringBuffer();
 
-  void beginClassDeclaration(Token begin, Token abstractToken, Token name) {
+  void beginClassDeclaration(Token begin, Token? abstractToken, Token name) {
     if (name.lexeme == "Listener") insideListenerClass = true;
   }
 
@@ -112,27 +110,31 @@
     insideListenerClass = false;
   }
 
-  void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
-      Token varFinalOrConst, Token getOrSet, Token name) {
+  void beginMethod(
+      Token? externalToken,
+      Token? staticToken,
+      Token? covariantToken,
+      Token? varFinalOrConst,
+      Token? getOrSet,
+      Token name) {
     currentMethodName = name.lexeme;
   }
 
-  void endClassMethod(Token getOrSet, Token beginToken, Token beginParam,
-      Token beginInitializers, Token endToken) {
+  void endClassMethod(Token? getOrSet, Token beginToken, Token beginParam,
+      Token? beginInitializers, Token endToken) {
     void end() {
       parameters.clear();
-      parameterTypes.clear();
       currentMethodName = null;
     }
 
     if (insideListenerClass &&
-        (currentMethodName.startsWith("begin") ||
-            currentMethodName.startsWith("end") ||
-            currentMethodName.startsWith("handle"))) {
+        (currentMethodName!.startsWith("begin") ||
+            currentMethodName!.startsWith("end") ||
+            currentMethodName!.startsWith("handle"))) {
       StringBuffer sb = new StringBuffer();
       sb.write("  ");
       Token token = beginToken;
-      Token latestToken;
+      Token? latestToken;
       while (true) {
         if (latestToken != null && latestToken.charEnd < token.charOffset) {
           sb.write(" ");
@@ -147,7 +149,7 @@
           throw token.runtimeType;
         }
         latestToken = token;
-        token = token.next;
+        token = token.next!;
       }
 
       if (token is SimpleToken && token.type == TokenType.FUNCTION) {
@@ -157,18 +159,18 @@
         String typeString;
         String typeStringCamel;
         String name;
-        if (currentMethodName.startsWith("begin")) {
+        if (currentMethodName!.startsWith("begin")) {
           typeString = "BEGIN";
           typeStringCamel = "Begin";
-          name = currentMethodName.substring("begin".length);
-        } else if (currentMethodName.startsWith("end")) {
+          name = currentMethodName!.substring("begin".length);
+        } else if (currentMethodName!.startsWith("end")) {
           typeString = "END";
           typeStringCamel = "End";
-          name = currentMethodName.substring("end".length);
-        } else if (currentMethodName.startsWith("handle")) {
+          name = currentMethodName!.substring("end".length);
+        } else if (currentMethodName!.startsWith("handle")) {
           typeString = "HANDLE";
           typeStringCamel = "Handle";
-          name = currentMethodName.substring("handle".length);
+          name = currentMethodName!.substring("handle".length);
         } else {
           throw "Unexpected.";
         }
@@ -178,10 +180,11 @@
         sb.write("DirectParserASTType.");
         sb.write(typeString);
         for (int i = 0; i < parameters.length; i++) {
+          Parameter param = parameters[i];
           sb.write(', ');
-          sb.write(parameters[i]);
+          sb.write(param.name);
           sb.write(': ');
-          sb.write(parameters[i]);
+          sb.write(param.name);
         }
 
         sb.write(");");
@@ -194,10 +197,12 @@
                 "extends DirectParserASTContent {\n");
 
         for (int i = 0; i < parameters.length; i++) {
+          Parameter param = parameters[i];
           newClasses.write("  final ");
-          newClasses.write(parameterTypes[i]);
+          newClasses.write(param.type);
+          newClasses.write(param.hasQuestion ? '?' : '');
           newClasses.write(' ');
-          newClasses.write(parameters[i]);
+          newClasses.write(param.name);
           newClasses.write(';\n');
         }
         newClasses.write('\n');
@@ -205,21 +210,26 @@
             "(DirectParserASTType type");
         String separator = ", {";
         for (int i = 0; i < parameters.length; i++) {
+          Parameter param = parameters[i];
           newClasses.write(separator);
+          if (!param.hasQuestion) {
+            newClasses.write('required ');
+          }
           newClasses.write('this.');
-          newClasses.write(parameters[i]);
+          newClasses.write(param.name);
           separator = ", ";
         }
         if (parameters.isNotEmpty) {
           newClasses.write('}');
         }
         newClasses.write(') : super("$name", type);\n\n');
-        newClasses.write("Map<String, Object> get deprecatedArguments => {");
+        newClasses.write("Map<String, Object?> get deprecatedArguments => {");
         for (int i = 0; i < parameters.length; i++) {
+          Parameter param = parameters[i];
           newClasses.write('"');
-          newClasses.write(parameters[i]);
+          newClasses.write(param.name);
           newClasses.write('": ');
-          newClasses.write(parameters[i]);
+          newClasses.write(param.name);
           newClasses.write(',');
         }
         newClasses.write("};\n");
@@ -237,21 +247,33 @@
   @override
   void handleNoType(Token lastConsumed) {
     latestSeenParameterTypeToken = null;
+    latestSeenParameterTypeTokenQuestion = null;
   }
 
-  void handleType(Token beginToken, Token questionMark) {
+  void handleType(Token beginToken, Token? questionMark) {
     latestSeenParameterTypeToken = beginToken.lexeme;
+    latestSeenParameterTypeTokenQuestion = questionMark?.lexeme;
   }
 
   void endFormalParameter(
-      Token thisKeyword,
-      Token periodAfterThis,
+      Token? thisKeyword,
+      Token? periodAfterThis,
       Token nameToken,
-      Token initializerStart,
-      Token initializerEnd,
+      Token? initializerStart,
+      Token? initializerEnd,
       FormalParameterKind kind,
       MemberKind memberKind) {
-    parameters.add(nameToken.lexeme);
-    parameterTypes.add(latestSeenParameterTypeToken);
+    parameters.add(new Parameter(
+        nameToken.lexeme,
+        latestSeenParameterTypeToken ?? 'dynamic',
+        latestSeenParameterTypeTokenQuestion == null ? false : true));
   }
 }
+
+class Parameter {
+  final String name;
+  final String type;
+  final bool hasQuestion;
+
+  Parameter(this.name, this.type, this.hasQuestion);
+}
diff --git a/pkg/vm/lib/transformations/ffi_definitions.dart b/pkg/vm/lib/transformations/ffi_definitions.dart
index 4655978..d3c8f1f 100644
--- a/pkg/vm/lib/transformations/ffi_definitions.dart
+++ b/pkg/vm/lib/transformations/ffi_definitions.dart
@@ -125,6 +125,13 @@
   ///
   /// Works both for transformed and non-transformed compound classes.
   Set<Class> _compoundClassDependencies(Class node) {
+    final fieldTypes = _compoundAnnotatedFields(node);
+    if (fieldTypes != null) {
+      // Transformed classes.
+      return _compoundAnnotatedDependencies(fieldTypes);
+    }
+
+    // Non-tranformed classes.
     final dependencies = <Class>{};
     final membersWithAnnotations =
         _compoundFieldMembers(node, includeSetters: false);
@@ -199,20 +206,25 @@
       } else {
         // Only visit the ones without cycles.
         final clazz = component.single;
-        final compoundData = _findFields(clazz);
-        final compoundType = compoundData.compoundType;
-        compoundCache[clazz] = compoundType;
-        final indexedClass = indexedCompoundClasses[clazz];
-        if (transformCompounds.contains(clazz) &&
-            compoundType is! InvalidNativeTypeCfe) {
-          // Only visit if it has not been transformed yet, and its fields
-          // are valid.
-
-          _replaceFields(clazz, indexedClass, compoundData);
-          _addSizeOfField(clazz, indexedClass, compoundType.size);
+        final mustBeTransformed = (transformCompoundsInvalid.contains(clazz) ||
+            transformCompounds.contains(clazz));
+        if (!mustBeTransformed) {
+          compoundCache[clazz] = _compoundAnnotatedNativeTypeCfe(clazz);
+        } else {
+          final compoundData = _findFields(clazz);
+          final compoundType = compoundData.compoundType;
+          compoundCache[clazz] = compoundType;
+          final indexedClass = indexedCompoundClasses[clazz];
+          if (transformCompounds.contains(clazz) &&
+              compoundType is! InvalidNativeTypeCfe) {
+            // Only replace fields if valid.
+            _replaceFields(clazz, indexedClass, compoundData);
+            _addSizeOfField(clazz, indexedClass, compoundType.size);
+          } else {
+            // Do add a sizeOf field even if invalid.
+            _addSizeOfField(clazz, indexedClass);
+          }
           changedStructureNotifier?.registerClassMemberChange(clazz);
-        } else if (transformCompoundsInvalid.contains(clazz)) {
-          _addSizeOfField(clazz, indexedClass);
         }
       }
     });
@@ -310,13 +322,12 @@
   /// Note that getters and setters that originate from an external field have
   /// the same `fileOffset`, we always returns getters first.
   ///
-  /// This works for both transformed and non-transformed structs.
-  List<Member> _compoundFieldMembers(Class node,
-      {bool possiblyAlreadyTransformed = true, bool includeSetters = true}) {
+  /// This works only for non-transformed compounds.
+  List<Member> _compoundFieldMembers(Class node, {bool includeSetters = true}) {
+    assert(_compoundAnnotatedFields(node) == null);
     final getterSetters = node.procedures.where((p) {
-      if (!possiblyAlreadyTransformed && !p.isExternal) {
-        // If a struct has not been transformed yet, we have the guarantee
-        // that getters and setters corresponding to native fields are external.
+      if (!p.isExternal) {
+        // Getters and setters corresponding to native fields are external.
         return false;
       }
       if (p.isSetter && includeSetters) {
@@ -350,8 +361,8 @@
 
   bool _checkFieldAnnotations(Class node, int packing) {
     bool success = true;
-    final membersWithAnnotations = _compoundFieldMembers(node,
-        possiblyAlreadyTransformed: false, includeSetters: false);
+    final membersWithAnnotations =
+        _compoundFieldMembers(node, includeSetters: false);
     for (final Member f in membersWithAnnotations) {
       if (f is Field) {
         if (f.initializer is! NullLiteral) {
@@ -541,6 +552,7 @@
     node.addConstructor(ctor);
   }
 
+  // Works only for non-transformed classes.
   CompoundData _findFields(Class node) {
     final types = <NativeTypeCfe>[];
     final fields = <int, Field>{};
@@ -672,6 +684,75 @@
     }
   }
 
+  static const vmFfiStructFields = "vm:ffi:struct-fields";
+
+  // return value is nullable.
+  InstanceConstant _compoundAnnotatedFields(Class node) {
+    for (final annotation in node.annotations) {
+      if (annotation is ConstantExpression) {
+        final constant = annotation.constant;
+        if (constant is InstanceConstant &&
+            constant.classNode == pragmaClass &&
+            constant.fieldValues[pragmaName.getterReference] ==
+                StringConstant(vmFfiStructFields)) {
+          return constant.fieldValues[pragmaOptions.getterReference];
+        }
+      }
+    }
+    return null;
+  }
+
+  Set<Class> _compoundAnnotatedDependencies(InstanceConstant layoutConstant) {
+    final fieldTypes = layoutConstant
+        .fieldValues[ffiStructLayoutTypesField.getterReference] as ListConstant;
+    final result = <Class>{};
+    for (final fieldType in fieldTypes.entries) {
+      if (fieldType is TypeLiteralConstant) {
+        final type = fieldType.type;
+        if (isCompoundSubtype(type)) {
+          final clazz = (type as InterfaceType).classNode;
+          result.add(clazz);
+        }
+      }
+    }
+    return result;
+  }
+
+  /// Must only be called if all the depencies are already in the cache.
+  CompoundNativeTypeCfe _compoundAnnotatedNativeTypeCfe(Class compoundClass) {
+    final layoutConstant = _compoundAnnotatedFields(compoundClass);
+    final fieldTypes = layoutConstant
+        .fieldValues[ffiStructLayoutTypesField.getterReference] as ListConstant;
+    final members = <NativeTypeCfe>[];
+    for (final fieldType in fieldTypes.entries) {
+      if (fieldType is TypeLiteralConstant) {
+        final dartType = fieldType.type;
+        members.add(NativeTypeCfe(this, dartType));
+      } else if (fieldType is InstanceConstant) {
+        final singleElementConstant = fieldType
+                .fieldValues[ffiInlineArrayElementTypeField.getterReference]
+            as TypeLiteralConstant;
+        final singleElementType =
+            NativeTypeCfe(this, singleElementConstant.type);
+        final arrayLengthConstant =
+            fieldType.fieldValues[ffiInlineArrayLengthField.getterReference]
+                as IntConstant;
+        final arrayLength = arrayLengthConstant.value;
+        members.add(ArrayNativeTypeCfe(singleElementType, arrayLength));
+      }
+    }
+    if (compoundClass.superclass == structClass) {
+      final packingConstant = layoutConstant
+          .fieldValues[ffiStructLayoutPackingField.getterReference];
+      if (packingConstant is IntConstant) {
+        return StructNativeTypeCfe(compoundClass, members,
+            packing: packingConstant.value);
+      }
+      return StructNativeTypeCfe(compoundClass, members);
+    }
+    return UnionNativeTypeCfe(compoundClass, members);
+  }
+
   // packing is `int?`.
   void _annoteCompoundWithFields(
       Class node, List<NativeTypeCfe> types, int packing) {
@@ -680,7 +761,7 @@
 
     node.addAnnotation(ConstantExpression(
         InstanceConstant(pragmaClass.reference, [], {
-          pragmaName.getterReference: StringConstant("vm:ffi:struct-fields"),
+          pragmaName.getterReference: StringConstant(vmFfiStructFields),
           pragmaOptions.getterReference:
               InstanceConstant(ffiStructLayoutClass.reference, [], {
             ffiStructLayoutTypesField.getterReference: ListConstant(
diff --git a/runtime/include/BUILD.gn b/runtime/include/BUILD.gn
new file mode 100644
index 0000000..462b931
--- /dev/null
+++ b/runtime/include/BUILD.gn
@@ -0,0 +1,20 @@
+# Copyright (c) 2021, 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.
+
+# This rule copies header files to include/
+copy("copy_headers") {
+  visibility = [ "../../sdk:copy_headers" ]
+
+  sources = [
+    "dart_api.h",
+    "dart_api_dl.c",
+    "dart_api_dl.h",
+    "dart_native_api.h",
+    "dart_tools_api.h",
+    "dart_version.h",
+    "internal/dart_api_dl_impl.h",
+  ]
+
+  outputs = [ "$root_out_dir/dart-sdk/include/{{source_target_relative}}" ]
+}
diff --git a/runtime/tests/concurrency/stress_test_list.json b/runtime/tests/concurrency/stress_test_list.json
index 170afa2..4044c33 100644
--- a/runtime/tests/concurrency/stress_test_list.json
+++ b/runtime/tests/concurrency/stress_test_list.json
@@ -3283,7 +3283,6 @@
     "../../../tests/standalone/io/file_write_only_test.dart",
     "../../../tests/standalone/io/gzip_format_exception_test.dart",
     "../../../tests/standalone/io/http_100_continue_test.dart",
-    "../../../tests/standalone/io/http_ban_http_normal_test.dart",
     "../../../tests/standalone/io/http_big_header_test.dart",
     "../../../tests/standalone/io/http_bind_test.dart",
     "../../../tests/standalone/io/http_client_connect_test.dart",
@@ -6630,7 +6629,6 @@
     "../../../tests/standalone_2/io/file_write_only_test.dart",
     "../../../tests/standalone_2/io/gzip_format_exception_test.dart",
     "../../../tests/standalone_2/io/http_100_continue_test.dart",
-    "../../../tests/standalone_2/io/http_ban_http_normal_test.dart",
     "../../../tests/standalone_2/io/http_big_header_test.dart",
     "../../../tests/standalone_2/io/http_bind_test.dart",
     "../../../tests/standalone_2/io/http_client_connect_test.dart",
diff --git a/runtime/third_party/binary_size/src/explain_binary_size_delta.py b/runtime/third_party/binary_size/src/explain_binary_size_delta.py
index ed9c689..13f7c12 100755
--- a/runtime/third_party/binary_size/src/explain_binary_size_delta.py
+++ b/runtime/third_party/binary_size/src/explain_binary_size_delta.py
@@ -243,7 +243,7 @@
     # We have now analyzed all symbols that are in cache1 and removed all of
     # the encountered symbols from cache2. What's left in cache2 is the new
     # symbols.
-    for key, bucket2 in cache2.iteritems():
+    for key, bucket2 in cache2.items():
         file_path, symbol_type = key
         for symbol_name, symbol_size_list in bucket2.items():
             for (symbol_size, shared) in symbol_size_list:
@@ -401,8 +401,9 @@
         growth = size_data['plus'] - size_data['minus']
         return growth
 
-    for path, size_data in sorted(
-            delta_by_path.iteritems(), key=delta_sort_key, reverse=True):
+    for path, size_data in sorted(delta_by_path.items(),
+                                  key=delta_sort_key,
+                                  reverse=True):
         gain = size_data['plus']
         loss = size_data['minus']
         delta = size_data['plus'] - size_data['minus']
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index 2d2de1c..bc3bf363 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -445,7 +445,6 @@
 void FlowGraphCompiler::RecordCatchEntryMoves(Environment* env,
                                               intptr_t try_index) {
 #if defined(DART_PRECOMPILER)
-  env = env != nullptr ? env : pending_deoptimization_env_;
   try_index = try_index != kInvalidTryIndex ? try_index : CurrentTryIndex();
   if (is_optimizing() && env != nullptr && (try_index != kInvalidTryIndex)) {
     env = env->Outermost();
@@ -903,9 +902,6 @@
   ASSERT(is_optimizing());
   ASSERT(!intrinsic_mode());
   ASSERT(!FLAG_precompiled_mode);
-  if (env == nullptr) {
-    env = pending_deoptimization_env_;
-  }
   if (env != nullptr) {
     env = env->GetLazyDeoptEnv(zone());
   }
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index fd45478..0171f8b 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -805,7 +805,7 @@
 
   void EmitEdgeCounter(intptr_t edge_id);
 
-  void RecordCatchEntryMoves(Environment* env = NULL,
+  void RecordCatchEntryMoves(Environment* env,
                              intptr_t try_index = kInvalidTryIndex);
 
   void EmitCallToStub(const Code& stub);
@@ -824,7 +824,7 @@
                             intptr_t deopt_id,
                             UntaggedPcDescriptors::Kind kind,
                             LocationSummary* locs,
-                            Environment* env = nullptr);
+                            Environment* env);
 
   void EmitYieldPositionMetadata(const InstructionSource& source,
                                  intptr_t yield_index);
@@ -882,8 +882,7 @@
                                 ICData::DeoptReasonId reason,
                                 uint32_t flags = 0);
 
-  CompilerDeoptInfo* AddDeoptIndexAtCall(intptr_t deopt_id,
-                                         Environment* env = nullptr);
+  CompilerDeoptInfo* AddDeoptIndexAtCall(intptr_t deopt_id, Environment* env);
   CompilerDeoptInfo* AddSlowPathDeoptInfo(intptr_t deopt_id, Environment* env);
 
   void AddSlowPathCode(SlowPathCode* slow_path);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index ab13d29..979db7e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -427,7 +427,8 @@
                                               UntaggedPcDescriptors::Kind kind,
                                               LocationSummary* locs) {
   __ BranchLinkPatchable(stub);
-  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs);
+  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateDartCall(intptr_t deopt_id,
@@ -438,7 +439,8 @@
                                          Code::EntryKind entry_kind) {
   ASSERT(CanCallDart());
   __ BranchLinkPatchable(stub, entry_kind);
-  EmitCallsiteMetadata(source, deopt_id, kind, locs);
+  EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateStaticDartCall(intptr_t deopt_id,
@@ -451,7 +453,8 @@
   if (CanPcRelativeCall(target)) {
     __ GenerateUnRelocatedPcRelativeCall();
     AddPcRelativeCallTarget(target, entry_kind);
-    EmitCallsiteMetadata(source, deopt_id, kind, locs);
+    EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                         pending_deoptimization_env_);
   } else {
     ASSERT(is_optimizing());
     // Call sites to the same target can share object pool entries. These
@@ -460,7 +463,8 @@
     // instead.
     const auto& stub = StubCode::CallStaticFunction();
     __ BranchLinkWithEquivalence(stub, target, entry_kind);
-    EmitCallsiteMetadata(source, deopt_id, kind, locs);
+    EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                         pending_deoptimization_env_);
     AddStaticCallTarget(target, entry_kind);
   }
 }
@@ -531,7 +535,8 @@
           ? Code::entry_point_offset(Code::EntryKind::kMonomorphic)
           : Code::entry_point_offset(Code::EntryKind::kMonomorphicUnchecked);
   __ Call(compiler::FieldAddress(CODE_REG, entry_point_offset));
-  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs);
+  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs,
+                       pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs());
 }
 
@@ -589,7 +594,7 @@
                   DeoptId::kNone, source, try_index);
   } else if (is_optimizing()) {
     AddCurrentDescriptor(UntaggedPcDescriptors::kOther, DeoptId::kNone, source);
-    AddDeoptIndexAtCall(deopt_id_after);
+    AddDeoptIndexAtCall(deopt_id_after, pending_deoptimization_env_);
   } else {
     AddCurrentDescriptor(UntaggedPcDescriptors::kOther, DeoptId::kNone, source);
     // Add deoptimization continuation point after the call and before the
@@ -642,7 +647,7 @@
   CLOBBERS_LR(__ blx(LR));
 
   EmitCallsiteMetadata(source, DeoptId::kNone, UntaggedPcDescriptors::kOther,
-                       locs);
+                       locs, pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs());
 }
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index 71b11eb..d97a36b 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -420,7 +420,8 @@
                                               UntaggedPcDescriptors::Kind kind,
                                               LocationSummary* locs) {
   __ BranchLinkPatchable(stub);
-  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs);
+  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateDartCall(intptr_t deopt_id,
@@ -431,7 +432,8 @@
                                          Code::EntryKind entry_kind) {
   ASSERT(CanCallDart());
   __ BranchLinkPatchable(stub, entry_kind);
-  EmitCallsiteMetadata(source, deopt_id, kind, locs);
+  EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateStaticDartCall(intptr_t deopt_id,
@@ -444,7 +446,8 @@
   if (CanPcRelativeCall(target)) {
     __ GenerateUnRelocatedPcRelativeCall();
     AddPcRelativeCallTarget(target, entry_kind);
-    EmitCallsiteMetadata(source, deopt_id, kind, locs);
+    EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                         pending_deoptimization_env_);
   } else {
     // Call sites to the same target can share object pool entries. These
     // call sites are never patched for breakpoints: the function is deoptimized
@@ -453,7 +456,8 @@
     ASSERT(is_optimizing());
     const auto& stub = StubCode::CallStaticFunction();
     __ BranchLinkWithEquivalence(stub, target, entry_kind);
-    EmitCallsiteMetadata(source, deopt_id, kind, locs);
+    EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                         pending_deoptimization_env_);
     AddStaticCallTarget(target, entry_kind);
   }
 }
@@ -521,7 +525,8 @@
           ? Code::entry_point_offset(Code::EntryKind::kMonomorphic)
           : Code::entry_point_offset(Code::EntryKind::kMonomorphicUnchecked);
   __ Call(compiler::FieldAddress(CODE_REG, entry_point_offset));
-  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs);
+  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs,
+                       pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs());
 }
 
@@ -575,7 +580,7 @@
                   DeoptId::kNone, source, try_index);
   } else if (is_optimizing()) {
     AddCurrentDescriptor(UntaggedPcDescriptors::kOther, DeoptId::kNone, source);
-    AddDeoptIndexAtCall(deopt_id_after);
+    AddDeoptIndexAtCall(deopt_id_after, pending_deoptimization_env_);
   } else {
     AddCurrentDescriptor(UntaggedPcDescriptors::kOther, DeoptId::kNone, source);
     // Add deoptimization continuation point after the call and before the
@@ -635,7 +640,7 @@
   CLOBBERS_LR(__ blr(LR));
 
   EmitCallsiteMetadata(source, DeoptId::kNone, UntaggedPcDescriptors::kOther,
-                       locs);
+                       locs, pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs());
 }
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index 1a06f0a..4634363 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -484,7 +484,8 @@
                                          Code::EntryKind entry_kind) {
   ASSERT(CanCallDart());
   __ Call(stub, /*moveable_target=*/false, entry_kind);
-  EmitCallsiteMetadata(source, deopt_id, kind, locs);
+  EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateStaticDartCall(intptr_t deopt_id,
@@ -496,7 +497,8 @@
   ASSERT(CanCallDart());
   const auto& stub = StubCode::CallStaticFunction();
   __ Call(stub, /*movable_target=*/true, entry_kind);
-  EmitCallsiteMetadata(source, deopt_id, kind, locs);
+  EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                       pending_deoptimization_env_);
   AddStaticCallTarget(target, entry_kind);
 }
 
@@ -574,7 +576,8 @@
           ? Code::entry_point_offset(Code::EntryKind::kMonomorphic)
           : Code::entry_point_offset(Code::EntryKind::kMonomorphicUnchecked);
   __ call(compiler::FieldAddress(CODE_REG, entry_point_offset));
-  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs);
+  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs,
+                       pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs());
 }
 
@@ -607,7 +610,7 @@
   // Precompilation not implemented on ia32 platform.
   ASSERT(!FLAG_precompiled_mode);
   if (is_optimizing()) {
-    AddDeoptIndexAtCall(deopt_id_after);
+    AddDeoptIndexAtCall(deopt_id_after, pending_deoptimization_env_);
   } else {
     // Add deoptimization continuation point after the call and before the
     // arguments are removed.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index f334d5c..01ee817 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -423,7 +423,8 @@
                                               UntaggedPcDescriptors::Kind kind,
                                               LocationSummary* locs) {
   __ CallPatchable(stub);
-  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs);
+  EmitCallsiteMetadata(source, DeoptId::kNone, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateDartCall(intptr_t deopt_id,
@@ -434,7 +435,8 @@
                                          Code::EntryKind entry_kind) {
   ASSERT(CanCallDart());
   __ CallPatchable(stub, entry_kind);
-  EmitCallsiteMetadata(source, deopt_id, kind, locs);
+  EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                       pending_deoptimization_env_);
 }
 
 void FlowGraphCompiler::GenerateStaticDartCall(intptr_t deopt_id,
@@ -448,7 +450,8 @@
   if (CanPcRelativeCall(target)) {
     __ GenerateUnRelocatedPcRelativeCall();
     AddPcRelativeCallTarget(target, entry_kind);
-    EmitCallsiteMetadata(source, deopt_id, kind, locs);
+    EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                         pending_deoptimization_env_);
   } else {
     // Call sites to the same target can share object pool entries. These
     // call sites are never patched for breakpoints: the function is deoptimized
@@ -456,7 +459,8 @@
     // instead.
     const auto& stub_entry = StubCode::CallStaticFunction();
     __ CallWithEquivalence(stub_entry, target, entry_kind);
-    EmitCallsiteMetadata(source, deopt_id, kind, locs);
+    EmitCallsiteMetadata(source, deopt_id, kind, locs,
+                         pending_deoptimization_env_);
     AddStaticCallTarget(target, entry_kind);
   }
 }
@@ -536,7 +540,8 @@
           ? Code::entry_point_offset(Code::EntryKind::kMonomorphic)
           : Code::entry_point_offset(Code::EntryKind::kMonomorphicUnchecked);
   __ call(compiler::FieldAddress(CODE_REG, entry_point_offset));
-  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs);
+  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kIcCall, locs,
+                       pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs(), RCX);
 }
 
@@ -591,7 +596,7 @@
                   DeoptId::kNone, source, try_index);
   } else if (is_optimizing()) {
     AddCurrentDescriptor(UntaggedPcDescriptors::kOther, DeoptId::kNone, source);
-    AddDeoptIndexAtCall(deopt_id_after);
+    AddDeoptIndexAtCall(deopt_id_after, pending_deoptimization_env_);
   } else {
     AddCurrentDescriptor(UntaggedPcDescriptors::kOther, DeoptId::kNone, source);
     // Add deoptimization continuation point after the call and before the
@@ -639,7 +644,8 @@
   __ LoadUniqueObject(RBX, data);
   __ call(RCX);
 
-  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kOther, locs);
+  EmitCallsiteMetadata(source, deopt_id, UntaggedPcDescriptors::kOther, locs,
+                       pending_deoptimization_env_);
   __ Drop(ic_data.SizeWithTypeArgs(), RCX);
 }
 
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 4e02ded..512db83 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -5024,7 +5024,7 @@
   }
   compiler->EmitDispatchTableCall(selector()->offset, arguments_descriptor);
   compiler->EmitCallsiteMetadata(source(), DeoptId::kNone,
-                                 UntaggedPcDescriptors::kOther, locs());
+                                 UntaggedPcDescriptors::kOther, locs(), env());
   if (selector()->called_on_null && !selector()->on_null_interface) {
     Value* receiver = ArgumentValueAt(FirstArgIndex());
     if (receiver->Type()->is_nullable()) {
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index cb66118..9e6fae8 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -619,7 +619,7 @@
   }
   __ blx(R2);
   compiler->EmitCallsiteMetadata(source(), deopt_id(),
-                                 UntaggedPcDescriptors::kOther, locs());
+                                 UntaggedPcDescriptors::kOther, locs(), env());
   __ Drop(argument_count);
 }
 
@@ -1365,7 +1365,8 @@
   // instruction. Therefore we emit the metadata here, 8 bytes (2 instructions)
   // after the original mov.
   compiler->EmitCallsiteMetadata(InstructionSource(), deopt_id(),
-                                 UntaggedPcDescriptors::Kind::kOther, locs());
+                                 UntaggedPcDescriptors::Kind::kOther, locs(),
+                                 env());
 
   // Update information in the thread object and enter a safepoint.
   if (CanExecuteGeneratedCodeInSafepoint()) {
@@ -3500,7 +3501,7 @@
     // deoptimization stub.
     const intptr_t deopt_id = DeoptId::ToDeoptAfter(GetDeoptId());
     if (compiler->is_optimizing()) {
-      compiler->AddDeoptIndexAtCall(deopt_id);
+      compiler->AddDeoptIndexAtCall(deopt_id, env());
     } else {
       compiler->AddCurrentDescriptor(UntaggedPcDescriptors::kDeopt, deopt_id,
                                      InstructionSource());
@@ -3585,7 +3586,7 @@
               instruction()->locs()->live_registers()->FpuRegisterCount() > 0);
       __ Call(compiler::Address(THR, entry_point_offset));
       compiler->RecordSafepoint(instruction()->locs(), kNumSlowPathArgs);
-      compiler->RecordCatchEntryMoves();
+      compiler->RecordCatchEntryMoves(env);
       compiler->AddDescriptor(
           UntaggedPcDescriptors::kOther, compiler->assembler()->CodeSize(),
           instruction()->deopt_id(), instruction()->source(),
@@ -3594,7 +3595,7 @@
       __ CallRuntime(kStackOverflowRuntimeEntry, kNumSlowPathArgs);
       compiler->EmitCallsiteMetadata(
           instruction()->source(), instruction()->deopt_id(),
-          UntaggedPcDescriptors::kOther, instruction()->locs());
+          UntaggedPcDescriptors::kOther, instruction()->locs(), env);
     }
 
     if (compiler->isolate_group()->use_osr() && !compiler->is_optimizing() &&
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index b4accd0..c6e7064 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -544,7 +544,7 @@
   }
   __ blr(R2);
   compiler->EmitCallsiteMetadata(source(), deopt_id(),
-                                 UntaggedPcDescriptors::kOther, locs());
+                                 UntaggedPcDescriptors::kOther, locs(), env());
   __ Drop(argument_count);
 }
 
@@ -1257,8 +1257,8 @@
   // ADR loads relative to itself, so add kInstrSize to point to the next
   // instruction.
   __ adr(temp, compiler::Immediate(Instr::kInstrSize));
-  compiler->EmitCallsiteMetadata(source(), deopt_id(),
-                                 UntaggedPcDescriptors::Kind::kOther, locs());
+  compiler->EmitCallsiteMetadata(
+      source(), deopt_id(), UntaggedPcDescriptors::Kind::kOther, locs(), env());
 
   __ StoreToOffset(temp, FPREG, kSavedCallerPcSlotFromFp * kWordSize);
 
@@ -3093,7 +3093,7 @@
     // deoptimization stub.
     const intptr_t deopt_id = DeoptId::ToDeoptAfter(GetDeoptId());
     if (compiler->is_optimizing()) {
-      compiler->AddDeoptIndexAtCall(deopt_id);
+      compiler->AddDeoptIndexAtCall(deopt_id, env());
     } else {
       compiler->AddCurrentDescriptor(UntaggedPcDescriptors::kDeopt, deopt_id,
                                      InstructionSource());
@@ -3189,7 +3189,7 @@
         __ Call(compiler::Address(THR, entry_point_offset));
       }
       compiler->RecordSafepoint(locs, kNumSlowPathArgs);
-      compiler->RecordCatchEntryMoves();
+      compiler->RecordCatchEntryMoves(env);
       compiler->AddDescriptor(
           UntaggedPcDescriptors::kOther, compiler->assembler()->CodeSize(),
           instruction()->deopt_id(), instruction()->source(),
@@ -3198,7 +3198,7 @@
       __ CallRuntime(kStackOverflowRuntimeEntry, kNumSlowPathArgs);
       compiler->EmitCallsiteMetadata(
           instruction()->source(), instruction()->deopt_id(),
-          UntaggedPcDescriptors::kOther, instruction()->locs());
+          UntaggedPcDescriptors::kOther, instruction()->locs(), env);
     }
 
     if (compiler->isolate_group()->use_osr() && !compiler->is_optimizing() &&
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index ca703b3..045490a 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -1031,7 +1031,8 @@
   compiler::Label get_pc;
   __ call(&get_pc);
   compiler->EmitCallsiteMetadata(InstructionSource(), deopt_id(),
-                                 UntaggedPcDescriptors::Kind::kOther, locs());
+                                 UntaggedPcDescriptors::Kind::kOther, locs(),
+                                 env());
   __ Bind(&get_pc);
   __ popl(temp);
   __ movl(compiler::Address(FPREG, kSavedCallerPcSlotFromFp * kWordSize), temp);
@@ -2782,7 +2783,7 @@
     // deoptimization stub.
     const intptr_t deopt_id = DeoptId::ToDeoptAfter(GetDeoptId());
     if (compiler->is_optimizing()) {
-      compiler->AddDeoptIndexAtCall(deopt_id);
+      compiler->AddDeoptIndexAtCall(deopt_id, env());
     } else {
       compiler->AddCurrentDescriptor(UntaggedPcDescriptors::kDeopt, deopt_id,
                                      InstructionSource());
@@ -2857,7 +2858,7 @@
     __ CallRuntime(kStackOverflowRuntimeEntry, kNumSlowPathArgs);
     compiler->EmitCallsiteMetadata(
         instruction()->source(), instruction()->deopt_id(),
-        UntaggedPcDescriptors::kOther, instruction()->locs());
+        UntaggedPcDescriptors::kOther, instruction()->locs(), env);
 
     if (compiler->isolate_group()->use_osr() && !compiler->is_optimizing() &&
         instruction()->in_loop()) {
@@ -6601,7 +6602,7 @@
   __ xorl(ECX, ECX);
   __ call(EBX);
   compiler->EmitCallsiteMetadata(source(), deopt_id(),
-                                 UntaggedPcDescriptors::kOther, locs());
+                                 UntaggedPcDescriptors::kOther, locs(), env());
   __ Drop(argument_count);
 }
 
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 72e489e..8e6d3e9 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -1218,7 +1218,8 @@
   // 'movq'.
   __ leaq(TMP, compiler::Address::AddressRIPRelative(0));
   compiler->EmitCallsiteMetadata(InstructionSource(), deopt_id(),
-                                 UntaggedPcDescriptors::Kind::kOther, locs());
+                                 UntaggedPcDescriptors::Kind::kOther, locs(),
+                                 env());
   __ movq(compiler::Address(FPREG, kSavedCallerPcSlotFromFp * kWordSize), TMP);
 
   if (CanExecuteGeneratedCodeInSafepoint()) {
@@ -3198,7 +3199,7 @@
     // deoptimization stub.
     const intptr_t deopt_id = DeoptId::ToDeoptAfter(GetDeoptId());
     if (compiler->is_optimizing()) {
-      compiler->AddDeoptIndexAtCall(deopt_id);
+      compiler->AddDeoptIndexAtCall(deopt_id, env());
     } else {
       compiler->AddCurrentDescriptor(UntaggedPcDescriptors::kDeopt, deopt_id,
                                      InstructionSource());
@@ -3281,7 +3282,7 @@
               instruction()->locs()->live_registers()->FpuRegisterCount() > 0);
       __ call(compiler::Address(THR, entry_point_offset));
       compiler->RecordSafepoint(instruction()->locs(), kNumSlowPathArgs);
-      compiler->RecordCatchEntryMoves();
+      compiler->RecordCatchEntryMoves(env);
       compiler->AddDescriptor(
           UntaggedPcDescriptors::kOther, compiler->assembler()->CodeSize(),
           instruction()->deopt_id(), instruction()->source(),
@@ -3290,7 +3291,7 @@
       __ CallRuntime(kStackOverflowRuntimeEntry, kNumSlowPathArgs);
       compiler->EmitCallsiteMetadata(
           instruction()->source(), instruction()->deopt_id(),
-          UntaggedPcDescriptors::kOther, instruction()->locs());
+          UntaggedPcDescriptors::kOther, instruction()->locs(), env);
     }
 
     if (compiler->isolate_group()->use_osr() && !compiler->is_optimizing() &&
@@ -6904,7 +6905,7 @@
   }
   __ call(RCX);
   compiler->EmitCallsiteMetadata(source(), deopt_id(),
-                                 UntaggedPcDescriptors::kOther, locs());
+                                 UntaggedPcDescriptors::kOther, locs(), env());
   __ Drop(argument_count);
 }
 
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 3734869..e1c900d 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -658,20 +658,10 @@
 }
 
 # This rule copies header files to include/
-copy("copy_headers") {
+group("copy_headers") {
   visibility = [ ":create_common_sdk" ]
-  sources = [
-    "../runtime/include/dart_api.h",
-    "../runtime/include/dart_api_dl.c",
-    "../runtime/include/dart_api_dl.h",
-    "../runtime/include/dart_native_api.h",
-    "../runtime/include/dart_tools_api.h",
-    "../runtime/include/dart_version.h",
-    "../runtime/include/internal/dart_api_dl_impl.h",
-  ]
 
-  # Some magic to recover the folder structure inside the include folder.
-  outputs = [ "$root_out_dir/dart-sdk/include/{{source_root_relative_dir}}/../../{{source_file_part}}" ]
+  deps = [ "../runtime/include:copy_headers" ]
 }
 
 # This rule copies libraries.json files to lib/
diff --git a/sdk/lib/_http/embedder_config.dart b/sdk/lib/_http/embedder_config.dart
index 730bc2dd..f43dc61 100644
--- a/sdk/lib/_http/embedder_config.dart
+++ b/sdk/lib/_http/embedder_config.dart
@@ -6,6 +6,16 @@
 
 /// Embedder-specific `dart:_http` configuration.
 
-/// [HttpClient] will disallow HTTP URLs if this value is set to `false`.
-@pragma("vm:entry-point")
-bool _embedderAllowsHttp = true;
+/// Embedder hook for intercepting HTTP connections.
+///
+/// The [HttpClient] will call this function as a connection to a given [Uri]
+/// is being established.
+///
+/// The embedder can provide its own implementation to,
+/// for example, confirm whether such a connection should be allowed.
+/// If the connection is not allowed, this method can throw an [Error],
+/// which should then provide enough information to say why the connection
+/// was refused.
+/// If this function returns normally, the connection attempt will proceed.
+@pragma('vm:entry-point')
+void Function(Uri) _httpConnectionHook = (_) {};
diff --git a/sdk/lib/_http/http.dart b/sdk/lib/_http/http.dart
index c20759f..4a6c80d 100644
--- a/sdk/lib/_http/http.dart
+++ b/sdk/lib/_http/http.dart
@@ -1721,8 +1721,10 @@
 
   /**
    * Sets the function to be called when a site is requesting
-   * authentication. The URL requested and the security realm from the
-   * server are passed in the arguments [url] and [realm].
+   * authentication.
+   *
+   * The URL requested, the authentication scheme and the security realm
+   * from the server are passed in the arguments [url], [scheme] and [realm].
    *
    * The function returns a [Future] which should complete when the
    * authentication has been resolved. If credentials cannot be
@@ -1742,7 +1744,7 @@
    * of a failed request, or issues due to missing request payload on retried
    * request.
    */
-  void set authenticate(Future<bool> f(Uri url, String scheme, String realm)?);
+  void set authenticate(Future<bool> f(Uri url, String scheme, String? realm)?);
 
   /**
    * Add credentials to be used for authorizing HTTP requests.
@@ -1838,9 +1840,11 @@
 
   /**
    * Sets the function to be called when a proxy is requesting
-   * authentication. Information on the proxy in use and the security
-   * realm for the authentication are passed in the arguments [host],
-   * [port] and [realm].
+   * authentication.
+   *
+   * Information on the proxy in use, the authentication scheme
+   * and the security realm for the authentication
+   * are passed in the arguments [host], [port], [scheme] and [realm].
    *
    * The function returns a [Future] which should complete when the
    * authentication has been resolved. If credentials cannot be
@@ -1854,7 +1858,7 @@
    * continue normally.
    */
   void set authenticateProxy(
-      Future<bool> f(String host, int port, String scheme, String realm)?);
+      Future<bool> f(String host, int port, String scheme, String? realm)?);
 
   /**
    * Add credentials to be used for authorizing HTTP proxies.
diff --git a/sdk/lib/_http/http_impl.dart b/sdk/lib/_http/http_impl.dart
index 4e4589b..b61f273 100644
--- a/sdk/lib/_http/http_impl.dart
+++ b/sdk/lib/_http/http_impl.dart
@@ -705,11 +705,11 @@
       if (onError == null) {
         return;
       }
-      if (onError is void Function(Object)) {
-        onError(e);
-      } else {
-        assert(onError is void Function(Object, StackTrace));
+      if (onError is void Function(Object, StackTrace)) {
         onError(e, st);
+      } else {
+        assert(onError is void Function(Object));
+        onError(e);
       }
     }, onDone: () {
       _profileData?.finishResponse();
@@ -784,15 +784,16 @@
           return new Future.value(false);
         }
         var proxy = _httpRequest._proxy;
-        return authenticateProxy(
-            proxy.host, proxy.port, scheme.toString(), realm);
-      } else {
-        var authenticate = _httpClient._authenticate;
-        if (authenticate == null) {
-          return new Future.value(false);
+        if (!proxy.isDirect) {
+          return authenticateProxy(
+              proxy.host!, proxy.port!, scheme.toString(), realm);
         }
-        return authenticate(_httpRequest.uri, scheme.toString(), realm);
       }
+      var authenticate = _httpClient._authenticate;
+      if (authenticate == null) {
+        return new Future.value(false);
+      }
+      return authenticate(_httpRequest.uri, scheme.toString(), realm);
     }
 
     List<String> challenge = authChallenge()!;
@@ -2499,9 +2500,10 @@
   final List<_Credentials> _credentials = [];
   final List<_ProxyCredentials> _proxyCredentials = [];
   final SecurityContext? _context;
-  Function? _authenticate;
-  Function? _authenticateProxy;
-  Function? _findProxy = HttpClient.findProxyFromEnvironment;
+  Future<bool> Function(Uri, String scheme, String? realm)? _authenticate;
+  Future<bool> Function(String host, int port, String scheme, String? realm)?
+      _authenticateProxy;
+  String Function(Uri)? _findProxy = HttpClient.findProxyFromEnvironment;
   Duration _idleTimeout = const Duration(seconds: 15);
   BadCertificateCallback? _badCertificateCallback;
 
@@ -2600,7 +2602,7 @@
         !force || !_connectionTargets.values.any((s) => s._active.isNotEmpty));
   }
 
-  set authenticate(Future<bool> f(Uri url, String scheme, String realm)?) {
+  set authenticate(Future<bool> f(Uri url, String scheme, String? realm)?) {
     _authenticate = f;
   }
 
@@ -2610,7 +2612,7 @@
   }
 
   set authenticateProxy(
-      Future<bool> f(String host, int port, String scheme, String realm)?) {
+      Future<bool> f(String host, int port, String scheme, String? realm)?) {
     _authenticateProxy = f;
   }
 
@@ -2630,22 +2632,6 @@
     });
   }
 
-  /// Whether HTTP requests are currently allowed.
-  ///
-  /// If the [Zone] variable `#dart.library.io.allow_http` is set to a boolean,
-  /// it determines whether the HTTP protocol is allowed. If the zone variable
-  /// is set to any other non-null value, HTTP is not allowed.
-  /// Otherwise, if the `dart.library.io.allow_http` environment flag
-  /// is set to `false`, HTTP is not allowed.
-  /// Otherwise, [_embedderAllowsHttp] determines the result.
-  bool get _isHttpAllowed {
-    final zoneOverride = Zone.current[#dart.library.io.allow_http];
-    if (zoneOverride != null) return true == zoneOverride;
-    bool envOverride =
-        bool.fromEnvironment("dart.library.io.allow_http", defaultValue: true);
-    return envOverride && _embedderAllowsHttp;
-  }
-
   bool _isLoopback(String host) {
     if (host.isEmpty) return false;
     if ("localhost" == host) return true;
@@ -2676,11 +2662,9 @@
       }
     }
 
+    _httpConnectionHook(uri);
+
     bool isSecure = uri.isScheme("https");
-    if (!_isHttpAllowed && !isSecure && !_isLoopback(uri.host)) {
-      throw new StateError(
-          "Insecure HTTP is not allowed by the current platform: $uri");
-    }
 
     int port = uri.port;
     if (port == 0) {
diff --git a/tests/ffi/regress_46004_test.dart b/tests/ffi/regress_46004_test.dart
new file mode 100644
index 0000000..81c4da7
--- /dev/null
+++ b/tests/ffi/regress_46004_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:ffi';
+
+import "package:expect/expect.dart";
+import "package:ffi/ffi.dart";
+
+class COMObject extends Struct {
+  external Pointer<IntPtr> lpVtbl;
+
+  // This should not be interpreted as a native field.
+  Pointer<IntPtr> get vtable => Pointer.fromAddress(lpVtbl.value);
+}
+
+void main() {
+  Expect.equals(sizeOf<Pointer>(), sizeOf<COMObject>());
+
+  final comObjectPointer = calloc<COMObject>();
+  final vTablePointer = calloc<IntPtr>();
+  vTablePointer.value = 1234;
+  final comObject = comObjectPointer.ref;
+  comObject.lpVtbl = vTablePointer;
+  Expect.equals(1234, comObject.vtable.address);
+  calloc.free(comObjectPointer);
+  calloc.free(vTablePointer);
+}
diff --git a/tests/ffi_2/regress_46004_test.dart b/tests/ffi_2/regress_46004_test.dart
new file mode 100644
index 0000000..627611f
--- /dev/null
+++ b/tests/ffi_2/regress_46004_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:ffi';
+
+import "package:expect/expect.dart";
+import "package:ffi/ffi.dart";
+
+class COMObject extends Struct {
+  Pointer<IntPtr> lpVtbl;
+
+  // This should not be interpreted as a native field.
+  Pointer<IntPtr> get vtable => Pointer.fromAddress(lpVtbl.value);
+}
+
+void main() {
+  Expect.equals(sizeOf<Pointer>(), sizeOf<COMObject>());
+
+  final comObjectPointer = calloc<COMObject>();
+  final vTablePointer = calloc<IntPtr>();
+  vTablePointer.value = 1234;
+  final comObject = comObjectPointer.ref;
+  comObject.lpVtbl = vTablePointer;
+  Expect.equals(1234, comObject.vtable.address);
+  calloc.free(comObjectPointer);
+  calloc.free(vTablePointer);
+}
diff --git a/tests/standalone/io/http_auth_digest_test.dart b/tests/standalone/io/http_auth_digest_test.dart
index e8d66fb..11e3ecf 100644
--- a/tests/standalone/io/http_auth_digest_test.dart
+++ b/tests/standalone/io/http_auth_digest_test.dart
@@ -207,7 +207,7 @@
   Server.start(algorithm, qop).then((server) {
     HttpClient client = new HttpClient();
 
-    client.authenticate = (Uri url, String scheme, String realm) {
+    client.authenticate = (url, scheme, realm) {
       Expect.equals("Digest", scheme);
       Expect.equals("test", realm);
       final completer = new Completer<bool>();
@@ -348,7 +348,7 @@
   client.addCredentials(Uri.parse("http://127.0.0.1/digest"), "test",
       new HttpClientDigestCredentials("dart", "password"));
 
-  client.authenticate = (Uri url, String scheme, String realm) {
+  client.authenticate = (url, scheme, realm) {
     client.addCredentials(Uri.parse("http://127.0.0.1/digest"), "test",
         new HttpClientDigestCredentials("dart", "password"));
     return new Future.value(true);
diff --git a/tests/standalone/io/http_auth_test.dart b/tests/standalone/io/http_auth_test.dart
index b1e5b31..9b01075 100644
--- a/tests/standalone/io/http_auth_test.dart
+++ b/tests/standalone/io/http_auth_test.dart
@@ -156,7 +156,7 @@
     HttpClient client = new HttpClient();
     bool passwordChanged = false;
 
-    client.authenticate = (Uri url, String scheme, String realm) {
+    client.authenticate = (Uri url, String scheme, String? realm) {
       Expect.equals("Basic", scheme);
       Expect.equals("realm", realm);
       String username = url.path.substring(1, 6);
@@ -165,7 +165,7 @@
       final completer = new Completer<bool>();
       new Timer(const Duration(milliseconds: 10), () {
         client.addCredentials(
-            url, realm, new HttpClientBasicCredentials(username, password));
+            url, realm!, new HttpClientBasicCredentials(username, password));
         completer.complete(true);
       });
       return completer.future;
@@ -208,7 +208,7 @@
 void testLocalServerBasic() {
   HttpClient client = new HttpClient();
 
-  client.authenticate = (Uri url, String scheme, String realm) {
+  client.authenticate = (Uri url, String scheme, String? realm) {
     client.addCredentials(Uri.parse("http://127.0.0.1/basic"), "test",
         new HttpClientBasicCredentials("test", "test"));
     return new Future.value(true);
@@ -228,7 +228,7 @@
 void testLocalServerDigest() {
   HttpClient client = new HttpClient();
 
-  client.authenticate = (Uri url, String scheme, String realm) {
+  client.authenticate = (Uri url, String scheme, String? realm) {
     print("url: $url, scheme: $scheme, realm: $realm");
     client.addCredentials(Uri.parse("http://127.0.0.1/digest"), "test",
         new HttpClientDigestCredentials("test", "test"));
diff --git a/tests/standalone/io/http_ban_http_embedder_test.dart b/tests/standalone/io/http_ban_http_embedder_test.dart
deleted file mode 100644
index 7fd3cb3..0000000
--- a/tests/standalone/io/http_ban_http_embedder_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// SharedOptions=-Ddart.library.io.allow_http=false
-
-import 'dart:async';
-import 'dart:io';
-
-import "package:async_helper/async_helper.dart";
-
-import 'http_ban_http_normal_test.dart';
-import 'http_bind_test.dart';
-
-Future<void> testWithHostname() async {
-  await testBanHttp(await getLocalHostIP(), (httpClient, httpUri) async {
-    asyncExpectThrows(
-        () async => await httpClient.getUrl(httpUri), (e) => e is StateError);
-    asyncExpectThrows(
-        () async => await runZoned(() => httpClient.getUrl(httpUri),
-            zoneValues: {#dart.library.io.allow_http: 'foo'}),
-        (e) => e is StateError);
-    asyncExpectThrows(
-        () async => await runZoned(() => httpClient.getUrl(httpUri),
-            zoneValues: {#dart.library.io.allow_http: false}),
-        (e) => e is StateError);
-    await asyncTest(() => runZoned(() => httpClient.getUrl(httpUri),
-        zoneValues: {#dart.library.io.allow_http: true}));
-  });
-}
-
-Future<void> testWithLoopback() async {
-  await testBanHttp("127.0.0.1", (httpClient, uri) async {
-    await asyncTest(
-        () => httpClient.getUrl(Uri.parse('http://localhost:${uri.port}')));
-    await asyncTest(
-        () => httpClient.getUrl(Uri.parse('http://127.0.0.1:${uri.port}')));
-  });
-}
-
-Future<void> testWithIPv6() async {
-  if (await supportsIPV6()) {
-    await testBanHttp("::1", (httpClient, uri) async {
-      await asyncTest(() => httpClient.getUrl(uri));
-    });
-  }
-}
-
-Future<void> testWithHTTPS() async {
-  await testBanHttp(await getLocalHostIP(), (httpClient, uri) async {
-    asyncExpectThrows(
-        () => httpClient.getUrl(Uri(
-              scheme: 'https',
-              host: uri.host,
-              port: uri.port,
-            )),
-        (e) => e is SocketException || e is HandshakeException);
-  });
-}
-
-main() {
-  asyncStart();
-  Future.wait(<Future>[
-    testWithHostname(),
-    testWithLoopback(),
-    testWithIPv6(),
-    testWithHTTPS(),
-  ]).then((_) => asyncEnd());
-}
diff --git a/tests/standalone/io/http_ban_http_normal_test.dart b/tests/standalone/io/http_ban_http_normal_test.dart
deleted file mode 100644
index 118dd4c..0000000
--- a/tests/standalone/io/http_ban_http_normal_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:io';
-
-import "package:async_helper/async_helper.dart";
-
-Future<String> getLocalHostIP() async {
-  final interfaces = await NetworkInterface.list(
-      includeLoopback: false, type: InternetAddressType.IPv4);
-  return interfaces.first.addresses.first.address;
-}
-
-Future<void> testBanHttp(String serverHost,
-    Future<void> testCode(HttpClient client, Uri uri)) async {
-  final httpClient = new HttpClient();
-  final server = await HttpServer.bind(serverHost, 0);
-  final uri = Uri(scheme: 'http', host: serverHost, port: server.port);
-  try {
-    await testCode(httpClient, uri);
-  } finally {
-    httpClient.close(force: true);
-    await server.close();
-  }
-}
-
-main() async {
-  await asyncTest(() async {
-    final host = await getLocalHostIP();
-    // Normal HTTP request succeeds.
-    await testBanHttp(host, (httpClient, uri) async {
-      await asyncTest(() => httpClient.getUrl(uri));
-    });
-    // We can ban HTTP explicitly.
-    await testBanHttp(host, (httpClient, uri) async {
-      asyncExpectThrows(
-          () async => await runZoned(() => httpClient.getUrl(uri),
-              zoneValues: {#dart.library.io.allow_http: false}),
-          (e) => e is StateError);
-    });
-  });
-}
diff --git a/tests/standalone_2/io/http_auth_digest_test.dart b/tests/standalone_2/io/http_auth_digest_test.dart
index 5f708b9..42d34ae 100644
--- a/tests/standalone_2/io/http_auth_digest_test.dart
+++ b/tests/standalone_2/io/http_auth_digest_test.dart
@@ -209,7 +209,7 @@
   Server.start(algorithm, qop).then((server) {
     HttpClient client = new HttpClient();
 
-    client.authenticate = (Uri url, String scheme, String realm) {
+    client.authenticate = (url, scheme, realm) {
       Expect.equals("Digest", scheme);
       Expect.equals("test", realm);
       Completer completer = new Completer<bool>();
@@ -350,7 +350,7 @@
   client.addCredentials(Uri.parse("http://127.0.0.1/digest"), "test",
       new HttpClientDigestCredentials("dart", "password"));
 
-  client.authenticate = (Uri url, String scheme, String realm) {
+  client.authenticate = (url, scheme, realm) {
     client.addCredentials(Uri.parse("http://127.0.0.1/digest"), "test",
         new HttpClientDigestCredentials("dart", "password"));
     return new Future.value(true);
diff --git a/tests/standalone_2/io/http_ban_http_embedder_test.dart b/tests/standalone_2/io/http_ban_http_embedder_test.dart
deleted file mode 100644
index d40500f..0000000
--- a/tests/standalone_2/io/http_ban_http_embedder_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// @dart = 2.9
-
-// SharedOptions=-Ddart.library.io.allow_http=false
-
-import 'dart:async';
-import 'dart:io';
-
-import "package:async_helper/async_helper.dart";
-
-import 'http_ban_http_normal_test.dart';
-import 'http_bind_test.dart';
-
-Future<void> testWithHostname() async {
-  await testBanHttp(await getLocalHostIP(), (httpClient, httpUri) async {
-    asyncExpectThrows(
-        () async => await httpClient.getUrl(httpUri), (e) => e is StateError);
-    asyncExpectThrows(
-        () async => await runZoned(() => httpClient.getUrl(httpUri),
-            zoneValues: {#dart.library.io.allow_http: 'foo'}),
-        (e) => e is StateError);
-    asyncExpectThrows(
-        () async => await runZoned(() => httpClient.getUrl(httpUri),
-            zoneValues: {#dart.library.io.allow_http: false}),
-        (e) => e is StateError);
-    await asyncTest(() => runZoned(() => httpClient.getUrl(httpUri),
-        zoneValues: {#dart.library.io.allow_http: true}));
-  });
-}
-
-Future<void> testWithLoopback() async {
-  await testBanHttp("127.0.0.1", (httpClient, uri) async {
-    await asyncTest(
-        () => httpClient.getUrl(Uri.parse('http://localhost:${uri.port}')));
-    await asyncTest(
-        () => httpClient.getUrl(Uri.parse('http://127.0.0.1:${uri.port}')));
-  });
-}
-
-Future<void> testWithIPv6() async {
-  if (await supportsIPV6()) {
-    await testBanHttp("::1", (httpClient, uri) async {
-      await asyncTest(() => httpClient.getUrl(uri));
-    });
-  }
-}
-
-Future<void> testWithHTTPS() async {
-  await testBanHttp(await getLocalHostIP(), (httpClient, uri) async {
-    asyncExpectThrows(
-        () => httpClient.getUrl(Uri(
-              scheme: 'https',
-              host: uri.host,
-              port: uri.port,
-            )),
-        (e) => e is SocketException || e is HandshakeException);
-  });
-}
-
-main() {
-  asyncStart();
-  Future.wait(<Future>[
-    testWithHostname(),
-    testWithLoopback(),
-    testWithIPv6(),
-    testWithHTTPS(),
-  ]).then((_) => asyncEnd());
-}
diff --git a/tests/standalone_2/io/http_ban_http_normal_test.dart b/tests/standalone_2/io/http_ban_http_normal_test.dart
deleted file mode 100644
index adb4708..0000000
--- a/tests/standalone_2/io/http_ban_http_normal_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// @dart = 2.9
-
-import 'dart:async';
-import 'dart:io';
-
-import "package:async_helper/async_helper.dart";
-
-Future<String> getLocalHostIP() async {
-  final interfaces = await NetworkInterface.list(
-      includeLoopback: false, type: InternetAddressType.IPv4);
-  return interfaces.first.addresses.first.address;
-}
-
-Future<void> testBanHttp(String serverHost,
-    Future<void> testCode(HttpClient client, Uri uri)) async {
-  final httpClient = new HttpClient();
-  final server = await HttpServer.bind(serverHost, 0);
-  final uri = Uri(scheme: 'http', host: serverHost, port: server.port);
-  try {
-    await testCode(httpClient, uri);
-  } finally {
-    httpClient.close(force: true);
-    await server.close();
-  }
-}
-
-main() async {
-  await asyncTest(() async {
-    final host = await getLocalHostIP();
-    // Normal HTTP request succeeds.
-    await testBanHttp(host, (httpClient, uri) async {
-      await asyncTest(() => httpClient.getUrl(uri));
-    });
-    // We can ban HTTP explicitly.
-    await testBanHttp(host, (httpClient, uri) async {
-      asyncExpectThrows(
-          () async => await runZoned(() => httpClient.getUrl(uri),
-              zoneValues: {#dart.library.io.allow_http: false}),
-          (e) => e is StateError);
-    });
-  });
-}
diff --git a/tools/VERSION b/tools/VERSION
index b1dbbe1..41a77e2 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 132
+PRERELEASE 133
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/create_pkg_manifest.py b/tools/create_pkg_manifest.py
index 0233b44..b0944f2 100755
--- a/tools/create_pkg_manifest.py
+++ b/tools/create_pkg_manifest.py
@@ -57,7 +57,7 @@
     # Extract the deps and filter.
     deps = local_scope.get('deps', {})
     filtered_deps = {}
-    for k, v in deps.iteritems():
+    for k, v in deps.items():
         if 'sdk/third_party/pkg' in k:
             new_key = k.replace('sdk', 'third_party/dart', 1)
             filtered_deps[new_key] = v
@@ -80,7 +80,7 @@
         manifest.write(warning)
         manifest.write('<manifest>\n')
         manifest.write('  <projects>\n')
-        for path, remote in sorted(deps.iteritems()):
+        for path, remote in sorted(deps.items()):
             remote_components = remote.split('@')
             remote_url = remote_components[0]
             remote_version = remote_components[1]
diff --git a/tools/dom/new_scripts/code_generator_dart.py b/tools/dom/new_scripts/code_generator_dart.py
index 2a92923..2830e7f 100644
--- a/tools/dom/new_scripts/code_generator_dart.py
+++ b/tools/dom/new_scripts/code_generator_dart.py
@@ -102,21 +102,20 @@
         # Set global type info
         idl_types.set_ancestors(
             dict((interface_name, interface_info['ancestors'])
-                 for interface_name, interface_info in interfaces_info.
-                 iteritems()
+                 for interface_name, interface_info in interfaces_info.items()
                  if interface_info['ancestors']))
         IdlType.set_callback_interfaces(
-            set(interface_name for interface_name, interface_info in
-                interfaces_info.iteritems()
+            set(interface_name
+                for interface_name, interface_info in interfaces_info.items()
                 if interface_info['is_callback_interface']))
         IdlType.set_implemented_as_interfaces(
             dict((interface_name, interface_info['implemented_as'])
-                 for interface_name, interface_info in interfaces_info.
-                 iteritems()
+                 for interface_name, interface_info in interfaces_info.items()
                  if interface_info['implemented_as']))
         IdlType.set_garbage_collected_types(
-            set(interface_name for interface_name, interface_info in
-                interfaces_info.iteritems() if 'GarbageCollected' in
+            set(interface_name
+                for interface_name, interface_info in interfaces_info.items()
+                if 'GarbageCollected' in
                 interface_info['inherited_extended_attributes']))
 
     def generate_code(self, definitions, interface_name, idl_pickle_filename,
diff --git a/tools/dom/scripts/dartmetadata.py b/tools/dom/scripts/dartmetadata.py
index ee4d4a4..b997b60 100644
--- a/tools/dom/scripts/dartmetadata.py
+++ b/tools/dom/scripts/dartmetadata.py
@@ -714,7 +714,7 @@
 
         if _monitor_type_metadata:
             monitored_interfaces = {}
-            for interface_id, interface_data in self._types.iteritems():
+            for interface_id, interface_data in self._types.items():
                 monitored_interface = interface_data.copy()
                 monitored_interface['members'] = monitored.Dict(
                     'dartmetadata.%s' % interface_id, interface_data['members'])
diff --git a/tools/utils.py b/tools/utils.py
index 9a0c720..644fc49 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -825,13 +825,13 @@
             self._upload(files)
 
         if missing:
-            self._report_missing_crashes(missing, throw=True)
+            self._report_missing_crashes(missing, throw=False)
 
     # todo(athom): move the logic to decide where to copy core dumps into the recipes.
     def _is_shard(self):
         return 'BUILDBOT_BUILDERNAME' not in os.environ
 
-    def _report_missing_crashes(self, missing, throw=True):
+    def _report_missing_crashes(self, missing, throw=False):
         missing_as_string = ', '.join([str(c) for c in missing])
         other_files = list(glob.glob(os.path.join(self._search_dir, '*')))
         sys.stderr.write(
@@ -1071,7 +1071,7 @@
         if crash.pid in self._dumps_by_pid:
             return self._dumps_by_pid[crash.pid]
 
-    def _report_missing_crashes(self, missing, throw=True):
+    def _report_missing_crashes(self, missing, throw=False):
         # Let's only print the debugging information and not throw. We'll do more
         # validation for werfault.exe and throw afterwards.
         super(WindowsCoreDumpArchiver, self)._report_missing_crashes(