Version 2.13.0-28.0.dev

Merge commit 'e585bd5655bdb1e8f1f8fb521485639caf249199' into 'dev'
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index ef388b7..7687b1d 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -236,7 +236,8 @@
             output_api.PresubmitError(
                 'File .dart_tool/package_config.json is out of date.\n'
                 'Fix these issues with:\n'
-                '%s tools/generate_package_config.dart' % (dart))
+                'gclient sync -D && %s tools/generate_package_config.dart' %
+                (dart))
         ]
     return []
 
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index 62fa573..458856b 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -987,7 +987,7 @@
     YamlMap optionMap;
     try {
       var provider = _createAnalysisOptionsProvider(disposition.packages);
-      optionsFile = provider.getOptionsFile(info.folder, crawlUp: true);
+      optionsFile = provider.getOptionsFile(info.folder);
       if (optionsFile != null) {
         optionMap = provider.getOptionsFromFile(optionsFile);
       }
diff --git a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
index a9ad271..0609ec6 100644
--- a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
+++ b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
@@ -26,8 +26,8 @@
   /// Recursively merge options referenced by an include directive
   /// and remove the include directive from the resulting options map.
   /// Return an empty options map if the file does not exist.
-  YamlMap getOptions(Folder root, {bool crawlUp = false}) {
-    File? optionsFile = getOptionsFile(root, crawlUp: crawlUp);
+  YamlMap getOptions(Folder root) {
+    File? optionsFile = getOptionsFile(root);
     if (optionsFile == null) {
       return YamlMap();
     }
@@ -37,13 +37,13 @@
   /// Return the analysis options file from which options should be read, or
   /// `null` if there is no analysis options file for code in the given [root].
   ///
-  /// The given [root] directory will be searched first. If no file is found and
-  /// if [crawlUp] is `true`, then enclosing directories will be searched.
-  File? getOptionsFile(Folder root, {bool crawlUp = false}) {
+  /// The given [root] directory will be searched first. If no file is found ,
+  /// then enclosing directories will be searched.
+  File? getOptionsFile(Folder root) {
     Resource? resource;
     for (Folder? folder = root; folder != null; folder = folder.parent) {
       resource = folder.getChild(AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
-      if (resource.exists || !crawlUp) {
+      if (resource.exists) {
         break;
       }
     }
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 656d53d..a773417 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -85,7 +85,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 = 126;
+  static const int DATA_VERSION = 127;
 
   /// The length of the list returned by [_computeDeclaredVariablesSignature].
   static const int _declaredVariablesSignatureLength = 4;
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index 3b666ff..834a4e1 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -123,16 +123,17 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addString(this._path ?? '');
-    signature.addString(this._exception ?? '');
-    signature.addString(this._stackTrace ?? '');
-    if (this._files == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addString(this._path ?? '');
+    signatureSink.addString(this._exception ?? '');
+    signatureSink.addString(this._stackTrace ?? '');
+    var files = this._files;
+    if (files == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._files!.length);
-      for (var x in this._files!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(files.length);
+      for (var x in files) {
+        x.collectApiSignature(signatureSink);
       }
     }
   }
@@ -147,18 +148,22 @@
     fb.Offset? offset_files;
     fb.Offset? offset_path;
     fb.Offset? offset_stackTrace;
-    if (_exception != null) {
-      offset_exception = fbBuilder.writeString(_exception!);
+    var exception = _exception;
+    if (exception != null) {
+      offset_exception = fbBuilder.writeString(exception);
     }
-    if (!(_files == null || _files!.isEmpty)) {
+    var files = _files;
+    if (!(files == null || files.isEmpty)) {
       offset_files =
-          fbBuilder.writeList(_files!.map((b) => b.finish(fbBuilder)).toList());
+          fbBuilder.writeList(files.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_path != null) {
-      offset_path = fbBuilder.writeString(_path!);
+    var path = _path;
+    if (path != null) {
+      offset_path = fbBuilder.writeString(path);
     }
-    if (_stackTrace != null) {
-      offset_stackTrace = fbBuilder.writeString(_stackTrace!);
+    var stackTrace = _stackTrace;
+    if (stackTrace != null) {
+      offset_stackTrace = fbBuilder.writeString(stackTrace);
     }
     fbBuilder.startTable();
     if (offset_exception != null) {
@@ -298,19 +303,21 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addString(this._path ?? '');
-    signature.addString(this._content ?? '');
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addString(this._path ?? '');
+    signatureSink.addString(this._content ?? '');
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_content;
     fb.Offset? offset_path;
-    if (_content != null) {
-      offset_content = fbBuilder.writeString(_content!);
+    var content = _content;
+    if (content != null) {
+      offset_content = fbBuilder.writeString(content);
     }
-    if (_path != null) {
-      offset_path = fbBuilder.writeString(_path!);
+    var path = _path;
+    if (path != null) {
+      offset_path = fbBuilder.writeString(path);
     }
     fbBuilder.startTable();
     if (offset_content != null) {
@@ -418,17 +425,18 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._errors == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var errors = this._errors;
+    if (errors == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._errors!.length);
-      for (var x in this._errors!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(errors.length);
+      for (var x in errors) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    signature.addBool(this._index != null);
-    this._index?.collectApiSignature(signature);
+    signatureSink.addBool(this._index != null);
+    this._index?.collectApiSignature(signatureSink);
   }
 
   List<int> toBuffer() {
@@ -439,12 +447,14 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_errors;
     fb.Offset? offset_index;
-    if (!(_errors == null || _errors!.isEmpty)) {
-      offset_errors = fbBuilder
-          .writeList(_errors!.map((b) => b.finish(fbBuilder)).toList());
+    var errors = _errors;
+    if (!(errors == null || errors.isEmpty)) {
+      offset_errors =
+          fbBuilder.writeList(errors.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_index != null) {
-      offset_index = _index!.finish(fbBuilder);
+    var index = _index;
+    if (index != null) {
+      offset_index = index.finish(fbBuilder);
     }
     fbBuilder.startTable();
     if (offset_errors != null) {
@@ -560,30 +570,30 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addInt(this._name ?? 0);
-    if (this._members == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addInt(this._name ?? 0);
+    var members = this._members;
+    if (members == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._members!.length);
-      for (var x in this._members!) {
-        signature.addInt(x);
+      signatureSink.addInt(members.length);
+      for (var x in members) {
+        signatureSink.addInt(x);
       }
     }
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_members;
-    if (!(_members == null || _members!.isEmpty)) {
-      offset_members = fbBuilder.writeListUint32(_members!);
+    var members = _members;
+    if (!(members == null || members.isEmpty)) {
+      offset_members = fbBuilder.writeListUint32(members);
     }
     fbBuilder.startTable();
     if (offset_members != null) {
       fbBuilder.addOffset(1, offset_members);
     }
-    if (_name != null && _name != 0) {
-      fbBuilder.addUint32(0, _name);
-    }
+    fbBuilder.addUint32(0, _name, 0);
     return fbBuilder.endTable();
   }
 }
@@ -727,18 +737,19 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addInt(this._offset ?? 0);
-    signature.addInt(this._length ?? 0);
-    signature.addString(this._uniqueName ?? '');
-    signature.addString(this._message ?? '');
-    signature.addString(this._correction ?? '');
-    if (this._contextMessages == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addInt(this._offset ?? 0);
+    signatureSink.addInt(this._length ?? 0);
+    signatureSink.addString(this._uniqueName ?? '');
+    signatureSink.addString(this._message ?? '');
+    signatureSink.addString(this._correction ?? '');
+    var contextMessages = this._contextMessages;
+    if (contextMessages == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._contextMessages!.length);
-      for (var x in this._contextMessages!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(contextMessages.length);
+      for (var x in contextMessages) {
+        x.collectApiSignature(signatureSink);
       }
     }
   }
@@ -748,18 +759,22 @@
     fb.Offset? offset_correction;
     fb.Offset? offset_message;
     fb.Offset? offset_uniqueName;
-    if (!(_contextMessages == null || _contextMessages!.isEmpty)) {
-      offset_contextMessages = fbBuilder.writeList(
-          _contextMessages!.map((b) => b.finish(fbBuilder)).toList());
+    var contextMessages = _contextMessages;
+    if (!(contextMessages == null || contextMessages.isEmpty)) {
+      offset_contextMessages = fbBuilder
+          .writeList(contextMessages.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_correction != null) {
-      offset_correction = fbBuilder.writeString(_correction!);
+    var correction = _correction;
+    if (correction != null) {
+      offset_correction = fbBuilder.writeString(correction);
     }
-    if (_message != null) {
-      offset_message = fbBuilder.writeString(_message!);
+    var message = _message;
+    if (message != null) {
+      offset_message = fbBuilder.writeString(message);
     }
-    if (_uniqueName != null) {
-      offset_uniqueName = fbBuilder.writeString(_uniqueName!);
+    var uniqueName = _uniqueName;
+    if (uniqueName != null) {
+      offset_uniqueName = fbBuilder.writeString(uniqueName);
     }
     fbBuilder.startTable();
     if (offset_contextMessages != null) {
@@ -768,15 +783,11 @@
     if (offset_correction != null) {
       fbBuilder.addOffset(4, offset_correction);
     }
-    if (_length != null && _length != 0) {
-      fbBuilder.addUint32(1, _length);
-    }
+    fbBuilder.addUint32(1, _length, 0);
     if (offset_message != null) {
       fbBuilder.addOffset(3, offset_message);
     }
-    if (_offset != null && _offset != 0) {
-      fbBuilder.addUint32(0, _offset);
-    }
+    fbBuilder.addUint32(0, _offset, 0);
     if (offset_uniqueName != null) {
       fbBuilder.addOffset(2, offset_uniqueName);
     }
@@ -1175,158 +1186,177 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._strings == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var strings = this._strings;
+    if (strings == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._strings!.length);
-      for (var x in this._strings!) {
-        signature.addString(x);
+      signatureSink.addInt(strings.length);
+      for (var x in strings) {
+        signatureSink.addString(x);
       }
     }
-    signature.addInt(this._nullStringId ?? 0);
-    if (this._unitLibraryUris == null) {
-      signature.addInt(0);
+    signatureSink.addInt(this._nullStringId ?? 0);
+    var unitLibraryUris = this._unitLibraryUris;
+    if (unitLibraryUris == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._unitLibraryUris!.length);
-      for (var x in this._unitLibraryUris!) {
-        signature.addInt(x);
+      signatureSink.addInt(unitLibraryUris.length);
+      for (var x in unitLibraryUris) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._unitUnitUris == null) {
-      signature.addInt(0);
+    var unitUnitUris = this._unitUnitUris;
+    if (unitUnitUris == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._unitUnitUris!.length);
-      for (var x in this._unitUnitUris!) {
-        signature.addInt(x);
+      signatureSink.addInt(unitUnitUris.length);
+      for (var x in unitUnitUris) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._elementKinds == null) {
-      signature.addInt(0);
+    var elementKinds = this._elementKinds;
+    if (elementKinds == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._elementKinds!.length);
-      for (var x in this._elementKinds!) {
-        signature.addInt(x.index);
+      signatureSink.addInt(elementKinds.length);
+      for (var x in elementKinds) {
+        signatureSink.addInt(x.index);
       }
     }
-    if (this._elementUnits == null) {
-      signature.addInt(0);
+    var elementUnits = this._elementUnits;
+    if (elementUnits == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._elementUnits!.length);
-      for (var x in this._elementUnits!) {
-        signature.addInt(x);
+      signatureSink.addInt(elementUnits.length);
+      for (var x in elementUnits) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._elementNameUnitMemberIds == null) {
-      signature.addInt(0);
+    var elementNameUnitMemberIds = this._elementNameUnitMemberIds;
+    if (elementNameUnitMemberIds == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._elementNameUnitMemberIds!.length);
-      for (var x in this._elementNameUnitMemberIds!) {
-        signature.addInt(x);
+      signatureSink.addInt(elementNameUnitMemberIds.length);
+      for (var x in elementNameUnitMemberIds) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._elementNameClassMemberIds == null) {
-      signature.addInt(0);
+    var elementNameClassMemberIds = this._elementNameClassMemberIds;
+    if (elementNameClassMemberIds == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._elementNameClassMemberIds!.length);
-      for (var x in this._elementNameClassMemberIds!) {
-        signature.addInt(x);
+      signatureSink.addInt(elementNameClassMemberIds.length);
+      for (var x in elementNameClassMemberIds) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._elementNameParameterIds == null) {
-      signature.addInt(0);
+    var elementNameParameterIds = this._elementNameParameterIds;
+    if (elementNameParameterIds == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._elementNameParameterIds!.length);
-      for (var x in this._elementNameParameterIds!) {
-        signature.addInt(x);
+      signatureSink.addInt(elementNameParameterIds.length);
+      for (var x in elementNameParameterIds) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._usedElements == null) {
-      signature.addInt(0);
+    var usedElements = this._usedElements;
+    if (usedElements == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedElements!.length);
-      for (var x in this._usedElements!) {
-        signature.addInt(x);
+      signatureSink.addInt(usedElements.length);
+      for (var x in usedElements) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._usedElementKinds == null) {
-      signature.addInt(0);
+    var usedElementKinds = this._usedElementKinds;
+    if (usedElementKinds == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedElementKinds!.length);
-      for (var x in this._usedElementKinds!) {
-        signature.addInt(x.index);
+      signatureSink.addInt(usedElementKinds.length);
+      for (var x in usedElementKinds) {
+        signatureSink.addInt(x.index);
       }
     }
-    if (this._usedElementOffsets == null) {
-      signature.addInt(0);
+    var usedElementOffsets = this._usedElementOffsets;
+    if (usedElementOffsets == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedElementOffsets!.length);
-      for (var x in this._usedElementOffsets!) {
-        signature.addInt(x);
+      signatureSink.addInt(usedElementOffsets.length);
+      for (var x in usedElementOffsets) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._usedElementLengths == null) {
-      signature.addInt(0);
+    var usedElementLengths = this._usedElementLengths;
+    if (usedElementLengths == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedElementLengths!.length);
-      for (var x in this._usedElementLengths!) {
-        signature.addInt(x);
+      signatureSink.addInt(usedElementLengths.length);
+      for (var x in usedElementLengths) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._usedElementIsQualifiedFlags == null) {
-      signature.addInt(0);
+    var usedElementIsQualifiedFlags = this._usedElementIsQualifiedFlags;
+    if (usedElementIsQualifiedFlags == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedElementIsQualifiedFlags!.length);
-      for (var x in this._usedElementIsQualifiedFlags!) {
-        signature.addBool(x);
+      signatureSink.addInt(usedElementIsQualifiedFlags.length);
+      for (var x in usedElementIsQualifiedFlags) {
+        signatureSink.addBool(x);
       }
     }
-    if (this._usedNames == null) {
-      signature.addInt(0);
+    var usedNames = this._usedNames;
+    if (usedNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedNames!.length);
-      for (var x in this._usedNames!) {
-        signature.addInt(x);
+      signatureSink.addInt(usedNames.length);
+      for (var x in usedNames) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._usedNameKinds == null) {
-      signature.addInt(0);
+    var usedNameKinds = this._usedNameKinds;
+    if (usedNameKinds == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedNameKinds!.length);
-      for (var x in this._usedNameKinds!) {
-        signature.addInt(x.index);
+      signatureSink.addInt(usedNameKinds.length);
+      for (var x in usedNameKinds) {
+        signatureSink.addInt(x.index);
       }
     }
-    if (this._usedNameOffsets == null) {
-      signature.addInt(0);
+    var usedNameOffsets = this._usedNameOffsets;
+    if (usedNameOffsets == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedNameOffsets!.length);
-      for (var x in this._usedNameOffsets!) {
-        signature.addInt(x);
+      signatureSink.addInt(usedNameOffsets.length);
+      for (var x in usedNameOffsets) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._usedNameIsQualifiedFlags == null) {
-      signature.addInt(0);
+    var usedNameIsQualifiedFlags = this._usedNameIsQualifiedFlags;
+    if (usedNameIsQualifiedFlags == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._usedNameIsQualifiedFlags!.length);
-      for (var x in this._usedNameIsQualifiedFlags!) {
-        signature.addBool(x);
+      signatureSink.addInt(usedNameIsQualifiedFlags.length);
+      for (var x in usedNameIsQualifiedFlags) {
+        signatureSink.addBool(x);
       }
     }
-    if (this._supertypes == null) {
-      signature.addInt(0);
+    var supertypes = this._supertypes;
+    if (supertypes == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._supertypes!.length);
-      for (var x in this._supertypes!) {
-        signature.addInt(x);
+      signatureSink.addInt(supertypes.length);
+      for (var x in supertypes) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._subtypes == null) {
-      signature.addInt(0);
+    var subtypes = this._subtypes;
+    if (subtypes == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._subtypes!.length);
-      for (var x in this._subtypes!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(subtypes.length);
+      for (var x in subtypes) {
+        x.collectApiSignature(signatureSink);
       }
     }
   }
@@ -1356,79 +1386,95 @@
     fb.Offset? offset_usedNameKinds;
     fb.Offset? offset_usedNameOffsets;
     fb.Offset? offset_usedNames;
-    if (!(_elementKinds == null || _elementKinds!.isEmpty)) {
+    var elementKinds = _elementKinds;
+    if (!(elementKinds == null || elementKinds.isEmpty)) {
       offset_elementKinds =
-          fbBuilder.writeListUint8(_elementKinds!.map((b) => b.index).toList());
+          fbBuilder.writeListUint8(elementKinds.map((b) => b.index).toList());
     }
-    if (!(_elementNameClassMemberIds == null ||
-        _elementNameClassMemberIds!.isEmpty)) {
+    var elementNameClassMemberIds = _elementNameClassMemberIds;
+    if (!(elementNameClassMemberIds == null ||
+        elementNameClassMemberIds.isEmpty)) {
       offset_elementNameClassMemberIds =
-          fbBuilder.writeListUint32(_elementNameClassMemberIds!);
+          fbBuilder.writeListUint32(elementNameClassMemberIds);
     }
-    if (!(_elementNameParameterIds == null ||
-        _elementNameParameterIds!.isEmpty)) {
+    var elementNameParameterIds = _elementNameParameterIds;
+    if (!(elementNameParameterIds == null || elementNameParameterIds.isEmpty)) {
       offset_elementNameParameterIds =
-          fbBuilder.writeListUint32(_elementNameParameterIds!);
+          fbBuilder.writeListUint32(elementNameParameterIds);
     }
-    if (!(_elementNameUnitMemberIds == null ||
-        _elementNameUnitMemberIds!.isEmpty)) {
+    var elementNameUnitMemberIds = _elementNameUnitMemberIds;
+    if (!(elementNameUnitMemberIds == null ||
+        elementNameUnitMemberIds.isEmpty)) {
       offset_elementNameUnitMemberIds =
-          fbBuilder.writeListUint32(_elementNameUnitMemberIds!);
+          fbBuilder.writeListUint32(elementNameUnitMemberIds);
     }
-    if (!(_elementUnits == null || _elementUnits!.isEmpty)) {
-      offset_elementUnits = fbBuilder.writeListUint32(_elementUnits!);
+    var elementUnits = _elementUnits;
+    if (!(elementUnits == null || elementUnits.isEmpty)) {
+      offset_elementUnits = fbBuilder.writeListUint32(elementUnits);
     }
-    if (!(_strings == null || _strings!.isEmpty)) {
+    var strings = _strings;
+    if (!(strings == null || strings.isEmpty)) {
       offset_strings = fbBuilder
-          .writeList(_strings!.map((b) => fbBuilder.writeString(b)).toList());
+          .writeList(strings.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (!(_subtypes == null || _subtypes!.isEmpty)) {
+    var subtypes = _subtypes;
+    if (!(subtypes == null || subtypes.isEmpty)) {
       offset_subtypes = fbBuilder
-          .writeList(_subtypes!.map((b) => b.finish(fbBuilder)).toList());
+          .writeList(subtypes.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (!(_supertypes == null || _supertypes!.isEmpty)) {
-      offset_supertypes = fbBuilder.writeListUint32(_supertypes!);
+    var supertypes = _supertypes;
+    if (!(supertypes == null || supertypes.isEmpty)) {
+      offset_supertypes = fbBuilder.writeListUint32(supertypes);
     }
-    if (!(_unitLibraryUris == null || _unitLibraryUris!.isEmpty)) {
-      offset_unitLibraryUris = fbBuilder.writeListUint32(_unitLibraryUris!);
+    var unitLibraryUris = _unitLibraryUris;
+    if (!(unitLibraryUris == null || unitLibraryUris.isEmpty)) {
+      offset_unitLibraryUris = fbBuilder.writeListUint32(unitLibraryUris);
     }
-    if (!(_unitUnitUris == null || _unitUnitUris!.isEmpty)) {
-      offset_unitUnitUris = fbBuilder.writeListUint32(_unitUnitUris!);
+    var unitUnitUris = _unitUnitUris;
+    if (!(unitUnitUris == null || unitUnitUris.isEmpty)) {
+      offset_unitUnitUris = fbBuilder.writeListUint32(unitUnitUris);
     }
-    if (!(_usedElementIsQualifiedFlags == null ||
-        _usedElementIsQualifiedFlags!.isEmpty)) {
+    var usedElementIsQualifiedFlags = _usedElementIsQualifiedFlags;
+    if (!(usedElementIsQualifiedFlags == null ||
+        usedElementIsQualifiedFlags.isEmpty)) {
       offset_usedElementIsQualifiedFlags =
-          fbBuilder.writeListBool(_usedElementIsQualifiedFlags!);
+          fbBuilder.writeListBool(usedElementIsQualifiedFlags);
     }
-    if (!(_usedElementKinds == null || _usedElementKinds!.isEmpty)) {
+    var usedElementKinds = _usedElementKinds;
+    if (!(usedElementKinds == null || usedElementKinds.isEmpty)) {
       offset_usedElementKinds = fbBuilder
-          .writeListUint8(_usedElementKinds!.map((b) => b.index).toList());
+          .writeListUint8(usedElementKinds.map((b) => b.index).toList());
     }
-    if (!(_usedElementLengths == null || _usedElementLengths!.isEmpty)) {
-      offset_usedElementLengths =
-          fbBuilder.writeListUint32(_usedElementLengths!);
+    var usedElementLengths = _usedElementLengths;
+    if (!(usedElementLengths == null || usedElementLengths.isEmpty)) {
+      offset_usedElementLengths = fbBuilder.writeListUint32(usedElementLengths);
     }
-    if (!(_usedElementOffsets == null || _usedElementOffsets!.isEmpty)) {
-      offset_usedElementOffsets =
-          fbBuilder.writeListUint32(_usedElementOffsets!);
+    var usedElementOffsets = _usedElementOffsets;
+    if (!(usedElementOffsets == null || usedElementOffsets.isEmpty)) {
+      offset_usedElementOffsets = fbBuilder.writeListUint32(usedElementOffsets);
     }
-    if (!(_usedElements == null || _usedElements!.isEmpty)) {
-      offset_usedElements = fbBuilder.writeListUint32(_usedElements!);
+    var usedElements = _usedElements;
+    if (!(usedElements == null || usedElements.isEmpty)) {
+      offset_usedElements = fbBuilder.writeListUint32(usedElements);
     }
-    if (!(_usedNameIsQualifiedFlags == null ||
-        _usedNameIsQualifiedFlags!.isEmpty)) {
+    var usedNameIsQualifiedFlags = _usedNameIsQualifiedFlags;
+    if (!(usedNameIsQualifiedFlags == null ||
+        usedNameIsQualifiedFlags.isEmpty)) {
       offset_usedNameIsQualifiedFlags =
-          fbBuilder.writeListBool(_usedNameIsQualifiedFlags!);
+          fbBuilder.writeListBool(usedNameIsQualifiedFlags);
     }
-    if (!(_usedNameKinds == null || _usedNameKinds!.isEmpty)) {
-      offset_usedNameKinds = fbBuilder
-          .writeListUint8(_usedNameKinds!.map((b) => b.index).toList());
+    var usedNameKinds = _usedNameKinds;
+    if (!(usedNameKinds == null || usedNameKinds.isEmpty)) {
+      offset_usedNameKinds =
+          fbBuilder.writeListUint8(usedNameKinds.map((b) => b.index).toList());
     }
-    if (!(_usedNameOffsets == null || _usedNameOffsets!.isEmpty)) {
-      offset_usedNameOffsets = fbBuilder.writeListUint32(_usedNameOffsets!);
+    var usedNameOffsets = _usedNameOffsets;
+    if (!(usedNameOffsets == null || usedNameOffsets.isEmpty)) {
+      offset_usedNameOffsets = fbBuilder.writeListUint32(usedNameOffsets);
     }
-    if (!(_usedNames == null || _usedNames!.isEmpty)) {
-      offset_usedNames = fbBuilder.writeListUint32(_usedNames!);
+    var usedNames = _usedNames;
+    if (!(usedNames == null || usedNames.isEmpty)) {
+      offset_usedNames = fbBuilder.writeListUint32(usedNames);
     }
     fbBuilder.startTable();
     if (offset_elementKinds != null) {
@@ -1446,9 +1492,7 @@
     if (offset_elementUnits != null) {
       fbBuilder.addOffset(5, offset_elementUnits);
     }
-    if (_nullStringId != null && _nullStringId != 0) {
-      fbBuilder.addUint32(1, _nullStringId);
-    }
+    fbBuilder.addUint32(1, _nullStringId, 0);
     if (offset_strings != null) {
       fbBuilder.addOffset(0, offset_strings);
     }
@@ -1856,41 +1900,45 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._referencedNames == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var referencedNames = this._referencedNames;
+    if (referencedNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._referencedNames!.length);
-      for (var x in this._referencedNames!) {
-        signature.addString(x);
+      signatureSink.addInt(referencedNames.length);
+      for (var x in referencedNames) {
+        signatureSink.addString(x);
       }
     }
-    if (this._definedTopLevelNames == null) {
-      signature.addInt(0);
+    var definedTopLevelNames = this._definedTopLevelNames;
+    if (definedTopLevelNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._definedTopLevelNames!.length);
-      for (var x in this._definedTopLevelNames!) {
-        signature.addString(x);
+      signatureSink.addInt(definedTopLevelNames.length);
+      for (var x in definedTopLevelNames) {
+        signatureSink.addString(x);
       }
     }
-    if (this._definedClassMemberNames == null) {
-      signature.addInt(0);
+    var definedClassMemberNames = this._definedClassMemberNames;
+    if (definedClassMemberNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._definedClassMemberNames!.length);
-      for (var x in this._definedClassMemberNames!) {
-        signature.addString(x);
+      signatureSink.addInt(definedClassMemberNames.length);
+      for (var x in definedClassMemberNames) {
+        signatureSink.addString(x);
       }
     }
-    if (this._subtypedNames == null) {
-      signature.addInt(0);
+    var subtypedNames = this._subtypedNames;
+    if (subtypedNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._subtypedNames!.length);
-      for (var x in this._subtypedNames!) {
-        signature.addString(x);
+      signatureSink.addInt(subtypedNames.length);
+      for (var x in subtypedNames) {
+        signatureSink.addString(x);
       }
     }
-    signature.addBool(this._unit2 != null);
-    this._unit2?.collectApiSignature(signature);
+    signatureSink.addBool(this._unit2 != null);
+    this._unit2?.collectApiSignature(signatureSink);
   }
 
   List<int> toBuffer() {
@@ -1904,27 +1952,31 @@
     fb.Offset? offset_referencedNames;
     fb.Offset? offset_subtypedNames;
     fb.Offset? offset_unit2;
-    if (!(_definedClassMemberNames == null ||
-        _definedClassMemberNames!.isEmpty)) {
+    var definedClassMemberNames = _definedClassMemberNames;
+    if (!(definedClassMemberNames == null || definedClassMemberNames.isEmpty)) {
       offset_definedClassMemberNames = fbBuilder.writeList(
-          _definedClassMemberNames!
+          definedClassMemberNames
               .map((b) => fbBuilder.writeString(b))
               .toList());
     }
-    if (!(_definedTopLevelNames == null || _definedTopLevelNames!.isEmpty)) {
+    var definedTopLevelNames = _definedTopLevelNames;
+    if (!(definedTopLevelNames == null || definedTopLevelNames.isEmpty)) {
       offset_definedTopLevelNames = fbBuilder.writeList(
-          _definedTopLevelNames!.map((b) => fbBuilder.writeString(b)).toList());
+          definedTopLevelNames.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (!(_referencedNames == null || _referencedNames!.isEmpty)) {
+    var referencedNames = _referencedNames;
+    if (!(referencedNames == null || referencedNames.isEmpty)) {
       offset_referencedNames = fbBuilder.writeList(
-          _referencedNames!.map((b) => fbBuilder.writeString(b)).toList());
+          referencedNames.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (!(_subtypedNames == null || _subtypedNames!.isEmpty)) {
+    var subtypedNames = _subtypedNames;
+    if (!(subtypedNames == null || subtypedNames.isEmpty)) {
       offset_subtypedNames = fbBuilder.writeList(
-          _subtypedNames!.map((b) => fbBuilder.writeString(b)).toList());
+          subtypedNames.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (_unit2 != null) {
-      offset_unit2 = _unit2!.finish(fbBuilder);
+    var unit2 = _unit2;
+    if (unit2 != null) {
+      offset_unit2 = unit2.finish(fbBuilder);
     }
     fbBuilder.startTable();
     if (offset_definedClassMemberNames != null) {
@@ -2330,67 +2382,72 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._children == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var children = this._children;
+    if (children == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._children!.length);
-      for (var x in this._children!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(children.length);
+      for (var x in children) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    signature.addInt(this._codeLength ?? 0);
-    signature.addInt(this._codeOffset ?? 0);
-    signature.addString(this._defaultArgumentListString ?? '');
-    if (this._defaultArgumentListTextRanges == null) {
-      signature.addInt(0);
+    signatureSink.addInt(this._codeLength ?? 0);
+    signatureSink.addInt(this._codeOffset ?? 0);
+    signatureSink.addString(this._defaultArgumentListString ?? '');
+    var defaultArgumentListTextRanges = this._defaultArgumentListTextRanges;
+    if (defaultArgumentListTextRanges == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._defaultArgumentListTextRanges!.length);
-      for (var x in this._defaultArgumentListTextRanges!) {
-        signature.addInt(x);
+      signatureSink.addInt(defaultArgumentListTextRanges.length);
+      for (var x in defaultArgumentListTextRanges) {
+        signatureSink.addInt(x);
       }
     }
-    signature.addString(this._docComplete ?? '');
-    signature.addString(this._docSummary ?? '');
-    signature.addInt(this._fieldMask ?? 0);
-    signature.addBool(this._isAbstract == true);
-    signature.addBool(this._isConst == true);
-    signature.addBool(this._isDeprecated == true);
-    signature.addBool(this._isFinal == true);
-    signature.addBool(this._isStatic == true);
-    signature.addInt(this._kind == null ? 0 : this._kind!.index);
-    signature.addInt(this._locationOffset ?? 0);
-    signature.addInt(this._locationStartColumn ?? 0);
-    signature.addInt(this._locationStartLine ?? 0);
-    signature.addString(this._name ?? '');
-    if (this._parameterNames == null) {
-      signature.addInt(0);
+    signatureSink.addString(this._docComplete ?? '');
+    signatureSink.addString(this._docSummary ?? '');
+    signatureSink.addInt(this._fieldMask ?? 0);
+    signatureSink.addBool(this._isAbstract == true);
+    signatureSink.addBool(this._isConst == true);
+    signatureSink.addBool(this._isDeprecated == true);
+    signatureSink.addBool(this._isFinal == true);
+    signatureSink.addBool(this._isStatic == true);
+    signatureSink.addInt(this._kind?.index ?? 0);
+    signatureSink.addInt(this._locationOffset ?? 0);
+    signatureSink.addInt(this._locationStartColumn ?? 0);
+    signatureSink.addInt(this._locationStartLine ?? 0);
+    signatureSink.addString(this._name ?? '');
+    var parameterNames = this._parameterNames;
+    if (parameterNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._parameterNames!.length);
-      for (var x in this._parameterNames!) {
-        signature.addString(x);
+      signatureSink.addInt(parameterNames.length);
+      for (var x in parameterNames) {
+        signatureSink.addString(x);
       }
     }
-    signature.addString(this._parameters ?? '');
-    if (this._parameterTypes == null) {
-      signature.addInt(0);
+    signatureSink.addString(this._parameters ?? '');
+    var parameterTypes = this._parameterTypes;
+    if (parameterTypes == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._parameterTypes!.length);
-      for (var x in this._parameterTypes!) {
-        signature.addString(x);
+      signatureSink.addInt(parameterTypes.length);
+      for (var x in parameterTypes) {
+        signatureSink.addString(x);
       }
     }
-    if (this._relevanceTags == null) {
-      signature.addInt(0);
+    var relevanceTags = this._relevanceTags;
+    if (relevanceTags == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._relevanceTags!.length);
-      for (var x in this._relevanceTags!) {
-        signature.addString(x);
+      signatureSink.addInt(relevanceTags.length);
+      for (var x in relevanceTags) {
+        signatureSink.addString(x);
       }
     }
-    signature.addInt(this._requiredParameterCount ?? 0);
-    signature.addString(this._returnType ?? '');
-    signature.addString(this._typeParameters ?? '');
+    signatureSink.addInt(this._requiredParameterCount ?? 0);
+    signatureSink.addString(this._returnType ?? '');
+    signatureSink.addString(this._typeParameters ?? '');
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
@@ -2406,59 +2463,67 @@
     fb.Offset? offset_relevanceTags;
     fb.Offset? offset_returnType;
     fb.Offset? offset_typeParameters;
-    if (!(_children == null || _children!.isEmpty)) {
+    var children = _children;
+    if (!(children == null || children.isEmpty)) {
       offset_children = fbBuilder
-          .writeList(_children!.map((b) => b.finish(fbBuilder)).toList());
+          .writeList(children.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_defaultArgumentListString != null) {
+    var defaultArgumentListString = _defaultArgumentListString;
+    if (defaultArgumentListString != null) {
       offset_defaultArgumentListString =
-          fbBuilder.writeString(_defaultArgumentListString!);
+          fbBuilder.writeString(defaultArgumentListString);
     }
-    if (!(_defaultArgumentListTextRanges == null ||
-        _defaultArgumentListTextRanges!.isEmpty)) {
+    var defaultArgumentListTextRanges = _defaultArgumentListTextRanges;
+    if (!(defaultArgumentListTextRanges == null ||
+        defaultArgumentListTextRanges.isEmpty)) {
       offset_defaultArgumentListTextRanges =
-          fbBuilder.writeListUint32(_defaultArgumentListTextRanges!);
+          fbBuilder.writeListUint32(defaultArgumentListTextRanges);
     }
-    if (_docComplete != null) {
-      offset_docComplete = fbBuilder.writeString(_docComplete!);
+    var docComplete = _docComplete;
+    if (docComplete != null) {
+      offset_docComplete = fbBuilder.writeString(docComplete);
     }
-    if (_docSummary != null) {
-      offset_docSummary = fbBuilder.writeString(_docSummary!);
+    var docSummary = _docSummary;
+    if (docSummary != null) {
+      offset_docSummary = fbBuilder.writeString(docSummary);
     }
-    if (_name != null) {
-      offset_name = fbBuilder.writeString(_name!);
+    var name = _name;
+    if (name != null) {
+      offset_name = fbBuilder.writeString(name);
     }
-    if (!(_parameterNames == null || _parameterNames!.isEmpty)) {
+    var parameterNames = _parameterNames;
+    if (!(parameterNames == null || parameterNames.isEmpty)) {
       offset_parameterNames = fbBuilder.writeList(
-          _parameterNames!.map((b) => fbBuilder.writeString(b)).toList());
+          parameterNames.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (_parameters != null) {
-      offset_parameters = fbBuilder.writeString(_parameters!);
+    var parameters = _parameters;
+    if (parameters != null) {
+      offset_parameters = fbBuilder.writeString(parameters);
     }
-    if (!(_parameterTypes == null || _parameterTypes!.isEmpty)) {
+    var parameterTypes = _parameterTypes;
+    if (!(parameterTypes == null || parameterTypes.isEmpty)) {
       offset_parameterTypes = fbBuilder.writeList(
-          _parameterTypes!.map((b) => fbBuilder.writeString(b)).toList());
+          parameterTypes.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (!(_relevanceTags == null || _relevanceTags!.isEmpty)) {
+    var relevanceTags = _relevanceTags;
+    if (!(relevanceTags == null || relevanceTags.isEmpty)) {
       offset_relevanceTags = fbBuilder.writeList(
-          _relevanceTags!.map((b) => fbBuilder.writeString(b)).toList());
+          relevanceTags.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (_returnType != null) {
-      offset_returnType = fbBuilder.writeString(_returnType!);
+    var returnType = _returnType;
+    if (returnType != null) {
+      offset_returnType = fbBuilder.writeString(returnType);
     }
-    if (_typeParameters != null) {
-      offset_typeParameters = fbBuilder.writeString(_typeParameters!);
+    var typeParameters = _typeParameters;
+    if (typeParameters != null) {
+      offset_typeParameters = fbBuilder.writeString(typeParameters);
     }
     fbBuilder.startTable();
     if (offset_children != null) {
       fbBuilder.addOffset(0, offset_children);
     }
-    if (_codeLength != null && _codeLength != 0) {
-      fbBuilder.addUint32(1, _codeLength);
-    }
-    if (_codeOffset != null && _codeOffset != 0) {
-      fbBuilder.addUint32(2, _codeOffset);
-    }
+    fbBuilder.addUint32(1, _codeLength, 0);
+    fbBuilder.addUint32(2, _codeOffset, 0);
     if (offset_defaultArgumentListString != null) {
       fbBuilder.addOffset(3, offset_defaultArgumentListString);
     }
@@ -2471,36 +2536,17 @@
     if (offset_docSummary != null) {
       fbBuilder.addOffset(6, offset_docSummary);
     }
-    if (_fieldMask != null && _fieldMask != 0) {
-      fbBuilder.addUint32(7, _fieldMask);
-    }
-    if (_isAbstract == true) {
-      fbBuilder.addBool(8, true);
-    }
-    if (_isConst == true) {
-      fbBuilder.addBool(9, true);
-    }
-    if (_isDeprecated == true) {
-      fbBuilder.addBool(10, true);
-    }
-    if (_isFinal == true) {
-      fbBuilder.addBool(11, true);
-    }
-    if (_isStatic == true) {
-      fbBuilder.addBool(12, true);
-    }
-    if (_kind != null && _kind != idl.AvailableDeclarationKind.CLASS) {
-      fbBuilder.addUint8(13, _kind!.index);
-    }
-    if (_locationOffset != null && _locationOffset != 0) {
-      fbBuilder.addUint32(14, _locationOffset);
-    }
-    if (_locationStartColumn != null && _locationStartColumn != 0) {
-      fbBuilder.addUint32(15, _locationStartColumn);
-    }
-    if (_locationStartLine != null && _locationStartLine != 0) {
-      fbBuilder.addUint32(16, _locationStartLine);
-    }
+    fbBuilder.addUint32(7, _fieldMask, 0);
+    fbBuilder.addBool(8, _isAbstract == true);
+    fbBuilder.addBool(9, _isConst == true);
+    fbBuilder.addBool(10, _isDeprecated == true);
+    fbBuilder.addBool(11, _isFinal == true);
+    fbBuilder.addBool(12, _isStatic == true);
+    fbBuilder.addUint8(
+        13, _kind?.index, idl.AvailableDeclarationKind.CLASS.index);
+    fbBuilder.addUint32(14, _locationOffset, 0);
+    fbBuilder.addUint32(15, _locationStartColumn, 0);
+    fbBuilder.addUint32(16, _locationStartLine, 0);
     if (offset_name != null) {
       fbBuilder.addOffset(17, offset_name);
     }
@@ -2516,9 +2562,7 @@
     if (offset_relevanceTags != null) {
       fbBuilder.addOffset(21, offset_relevanceTags);
     }
-    if (_requiredParameterCount != null && _requiredParameterCount != 0) {
-      fbBuilder.addUint32(22, _requiredParameterCount);
-    }
+    fbBuilder.addUint32(22, _requiredParameterCount, 0);
     if (offset_returnType != null) {
       fbBuilder.addOffset(23, offset_returnType);
     }
@@ -2960,33 +3004,36 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._declarations == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var declarations = this._declarations;
+    if (declarations == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._declarations!.length);
-      for (var x in this._declarations!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(declarations.length);
+      for (var x in declarations) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    signature.addBool(this._directiveInfo != null);
-    this._directiveInfo?.collectApiSignature(signature);
-    if (this._exports == null) {
-      signature.addInt(0);
+    signatureSink.addBool(this._directiveInfo != null);
+    this._directiveInfo?.collectApiSignature(signatureSink);
+    var exports = this._exports;
+    if (exports == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._exports!.length);
-      for (var x in this._exports!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(exports.length);
+      for (var x in exports) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    signature.addBool(this._isLibrary == true);
-    signature.addBool(this._isLibraryDeprecated == true);
-    if (this._parts == null) {
-      signature.addInt(0);
+    signatureSink.addBool(this._isLibrary == true);
+    signatureSink.addBool(this._isLibraryDeprecated == true);
+    var parts = this._parts;
+    if (parts == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._parts!.length);
-      for (var x in this._parts!) {
-        signature.addString(x);
+      signatureSink.addInt(parts.length);
+      for (var x in parts) {
+        signatureSink.addString(x);
       }
     }
   }
@@ -3002,23 +3049,28 @@
     fb.Offset? offset_exports;
     fb.Offset? offset_lineStarts;
     fb.Offset? offset_parts;
-    if (!(_declarations == null || _declarations!.isEmpty)) {
+    var declarations = _declarations;
+    if (!(declarations == null || declarations.isEmpty)) {
       offset_declarations = fbBuilder
-          .writeList(_declarations!.map((b) => b.finish(fbBuilder)).toList());
+          .writeList(declarations.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_directiveInfo != null) {
-      offset_directiveInfo = _directiveInfo!.finish(fbBuilder);
+    var directiveInfo = _directiveInfo;
+    if (directiveInfo != null) {
+      offset_directiveInfo = directiveInfo.finish(fbBuilder);
     }
-    if (!(_exports == null || _exports!.isEmpty)) {
-      offset_exports = fbBuilder
-          .writeList(_exports!.map((b) => b.finish(fbBuilder)).toList());
+    var exports = _exports;
+    if (!(exports == null || exports.isEmpty)) {
+      offset_exports =
+          fbBuilder.writeList(exports.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (!(_lineStarts == null || _lineStarts!.isEmpty)) {
-      offset_lineStarts = fbBuilder.writeListUint32(_lineStarts!);
+    var lineStarts = _lineStarts;
+    if (!(lineStarts == null || lineStarts.isEmpty)) {
+      offset_lineStarts = fbBuilder.writeListUint32(lineStarts);
     }
-    if (!(_parts == null || _parts!.isEmpty)) {
+    var parts = _parts;
+    if (!(parts == null || parts.isEmpty)) {
       offset_parts = fbBuilder
-          .writeList(_parts!.map((b) => fbBuilder.writeString(b)).toList());
+          .writeList(parts.map((b) => fbBuilder.writeString(b)).toList());
     }
     fbBuilder.startTable();
     if (offset_declarations != null) {
@@ -3030,12 +3082,8 @@
     if (offset_exports != null) {
       fbBuilder.addOffset(2, offset_exports);
     }
-    if (_isLibrary == true) {
-      fbBuilder.addBool(3, true);
-    }
-    if (_isLibraryDeprecated == true) {
-      fbBuilder.addBool(4, true);
-    }
+    fbBuilder.addBool(3, _isLibrary == true);
+    fbBuilder.addBool(4, _isLibraryDeprecated == true);
     if (offset_lineStarts != null) {
       fbBuilder.addOffset(5, offset_lineStarts);
     }
@@ -3206,14 +3254,15 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addString(this._uri ?? '');
-    if (this._combinators == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addString(this._uri ?? '');
+    var combinators = this._combinators;
+    if (combinators == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._combinators!.length);
-      for (var x in this._combinators!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(combinators.length);
+      for (var x in combinators) {
+        x.collectApiSignature(signatureSink);
       }
     }
   }
@@ -3221,12 +3270,14 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_combinators;
     fb.Offset? offset_uri;
-    if (!(_combinators == null || _combinators!.isEmpty)) {
+    var combinators = _combinators;
+    if (!(combinators == null || combinators.isEmpty)) {
       offset_combinators = fbBuilder
-          .writeList(_combinators!.map((b) => b.finish(fbBuilder)).toList());
+          .writeList(combinators.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_uri != null) {
-      offset_uri = fbBuilder.writeString(_uri!);
+    var uri = _uri;
+    if (uri != null) {
+      offset_uri = fbBuilder.writeString(uri);
     }
     fbBuilder.startTable();
     if (offset_combinators != null) {
@@ -3331,21 +3382,23 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._shows == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var shows = this._shows;
+    if (shows == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._shows!.length);
-      for (var x in this._shows!) {
-        signature.addString(x);
+      signatureSink.addInt(shows.length);
+      for (var x in shows) {
+        signatureSink.addString(x);
       }
     }
-    if (this._hides == null) {
-      signature.addInt(0);
+    var hides = this._hides;
+    if (hides == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._hides!.length);
-      for (var x in this._hides!) {
-        signature.addString(x);
+      signatureSink.addInt(hides.length);
+      for (var x in hides) {
+        signatureSink.addString(x);
       }
     }
   }
@@ -3353,13 +3406,15 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_hides;
     fb.Offset? offset_shows;
-    if (!(_hides == null || _hides!.isEmpty)) {
+    var hides = _hides;
+    if (!(hides == null || hides.isEmpty)) {
       offset_hides = fbBuilder
-          .writeList(_hides!.map((b) => fbBuilder.writeString(b)).toList());
+          .writeList(hides.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (!(_shows == null || _shows!.isEmpty)) {
+    var shows = _shows;
+    if (!(shows == null || shows.isEmpty)) {
       offset_shows = fbBuilder
-          .writeList(_shows!.map((b) => fbBuilder.writeString(b)).toList());
+          .writeList(shows.map((b) => fbBuilder.writeString(b)).toList());
     }
     fbBuilder.startTable();
     if (offset_hides != null) {
@@ -3466,21 +3521,23 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._signature == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var signature = this._signature;
+    if (signature == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._signature!.length);
-      for (var x in this._signature!) {
-        signature.addInt(x);
+      signatureSink.addInt(signature.length);
+      for (var x in signature) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._errors == null) {
-      signature.addInt(0);
+    var errors = this._errors;
+    if (errors == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._errors!.length);
-      for (var x in this._errors!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(errors.length);
+      for (var x in errors) {
+        x.collectApiSignature(signatureSink);
       }
     }
   }
@@ -3493,12 +3550,14 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_errors;
     fb.Offset? offset_signature;
-    if (!(_errors == null || _errors!.isEmpty)) {
-      offset_errors = fbBuilder
-          .writeList(_errors!.map((b) => b.finish(fbBuilder)).toList());
+    var errors = _errors;
+    if (!(errors == null || errors.isEmpty)) {
+      offset_errors =
+          fbBuilder.writeList(errors.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (!(_signature == null || _signature!.isEmpty)) {
-      offset_signature = fbBuilder.writeListUint32(_signature!);
+    var signature = _signature;
+    if (!(signature == null || signature.isEmpty)) {
+      offset_signature = fbBuilder.writeListUint32(signature);
     }
     fbBuilder.startTable();
     if (offset_errors != null) {
@@ -3609,17 +3668,18 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._contentDigest == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var contentDigest = this._contentDigest;
+    if (contentDigest == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._contentDigest!.length);
-      for (var x in this._contentDigest!) {
-        signature.addInt(x);
+      signatureSink.addInt(contentDigest.length);
+      for (var x in contentDigest) {
+        signatureSink.addInt(x);
       }
     }
-    signature.addBool(this._unlinkedUnit != null);
-    this._unlinkedUnit?.collectApiSignature(signature);
+    signatureSink.addBool(this._unlinkedUnit != null);
+    this._unlinkedUnit?.collectApiSignature(signatureSink);
   }
 
   List<int> toBuffer() {
@@ -3630,11 +3690,13 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_contentDigest;
     fb.Offset? offset_unlinkedUnit;
-    if (!(_contentDigest == null || _contentDigest!.isEmpty)) {
-      offset_contentDigest = fbBuilder.writeListUint32(_contentDigest!);
+    var contentDigest = _contentDigest;
+    if (!(contentDigest == null || contentDigest.isEmpty)) {
+      offset_contentDigest = fbBuilder.writeListUint32(contentDigest);
     }
-    if (_unlinkedUnit != null) {
-      offset_unlinkedUnit = _unlinkedUnit!.finish(fbBuilder);
+    var unlinkedUnit = _unlinkedUnit;
+    if (unlinkedUnit != null) {
+      offset_unlinkedUnit = unlinkedUnit.finish(fbBuilder);
     }
     fbBuilder.startTable();
     if (offset_contentDigest != null) {
@@ -3763,35 +3825,33 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addString(this._filePath ?? '');
-    signature.addInt(this._length ?? 0);
-    signature.addString(this._message ?? '');
-    signature.addInt(this._offset ?? 0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addString(this._filePath ?? '');
+    signatureSink.addInt(this._length ?? 0);
+    signatureSink.addString(this._message ?? '');
+    signatureSink.addInt(this._offset ?? 0);
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_filePath;
     fb.Offset? offset_message;
-    if (_filePath != null) {
-      offset_filePath = fbBuilder.writeString(_filePath!);
+    var filePath = _filePath;
+    if (filePath != null) {
+      offset_filePath = fbBuilder.writeString(filePath);
     }
-    if (_message != null) {
-      offset_message = fbBuilder.writeString(_message!);
+    var message = _message;
+    if (message != null) {
+      offset_message = fbBuilder.writeString(message);
     }
     fbBuilder.startTable();
     if (offset_filePath != null) {
       fbBuilder.addOffset(0, offset_filePath);
     }
-    if (_length != null && _length != 0) {
-      fbBuilder.addUint32(1, _length);
-    }
+    fbBuilder.addUint32(1, _length, 0);
     if (offset_message != null) {
       fbBuilder.addOffset(2, offset_message);
     }
-    if (_offset != null && _offset != 0) {
-      fbBuilder.addUint32(3, _offset);
-    }
+    fbBuilder.addUint32(3, _offset, 0);
     return fbBuilder.endTable();
   }
 }
@@ -3906,21 +3966,23 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._templateNames == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var templateNames = this._templateNames;
+    if (templateNames == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._templateNames!.length);
-      for (var x in this._templateNames!) {
-        signature.addString(x);
+      signatureSink.addInt(templateNames.length);
+      for (var x in templateNames) {
+        signatureSink.addString(x);
       }
     }
-    if (this._templateValues == null) {
-      signature.addInt(0);
+    var templateValues = this._templateValues;
+    if (templateValues == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._templateValues!.length);
-      for (var x in this._templateValues!) {
-        signature.addString(x);
+      signatureSink.addInt(templateValues.length);
+      for (var x in templateValues) {
+        signatureSink.addString(x);
       }
     }
   }
@@ -3928,13 +3990,15 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_templateNames;
     fb.Offset? offset_templateValues;
-    if (!(_templateNames == null || _templateNames!.isEmpty)) {
+    var templateNames = _templateNames;
+    if (!(templateNames == null || templateNames.isEmpty)) {
       offset_templateNames = fbBuilder.writeList(
-          _templateNames!.map((b) => fbBuilder.writeString(b)).toList());
+          templateNames.map((b) => fbBuilder.writeString(b)).toList());
     }
-    if (!(_templateValues == null || _templateValues!.isEmpty)) {
+    var templateValues = _templateValues;
+    if (!(templateValues == null || templateValues.isEmpty)) {
       offset_templateValues = fbBuilder.writeList(
-          _templateValues!.map((b) => fbBuilder.writeString(b)).toList());
+          templateValues.map((b) => fbBuilder.writeString(b)).toList());
     }
     fbBuilder.startTable();
     if (offset_templateNames != null) {
@@ -4024,8 +4088,8 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addInt(this._fake ?? 0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addInt(this._fake ?? 0);
   }
 
   List<int> toBuffer() {
@@ -4035,9 +4099,7 @@
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fbBuilder.startTable();
-    if (_fake != null && _fake != 0) {
-      fbBuilder.addUint32(0, _fake);
-    }
+    fbBuilder.addUint32(0, _fake, 0);
     return fbBuilder.endTable();
   }
 }
@@ -4128,27 +4190,30 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._configurations == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var configurations = this._configurations;
+    if (configurations == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._configurations!.length);
-      for (var x in this._configurations!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(configurations.length);
+      for (var x in configurations) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    signature.addString(this._uri ?? '');
+    signatureSink.addString(this._uri ?? '');
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_configurations;
     fb.Offset? offset_uri;
-    if (!(_configurations == null || _configurations!.isEmpty)) {
+    var configurations = _configurations;
+    if (!(configurations == null || configurations.isEmpty)) {
       offset_configurations = fbBuilder
-          .writeList(_configurations!.map((b) => b.finish(fbBuilder)).toList());
+          .writeList(configurations.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (_uri != null) {
-      offset_uri = fbBuilder.writeString(_uri!);
+    var uri = _uri;
+    if (uri != null) {
+      offset_uri = fbBuilder.writeString(uri);
     }
     fbBuilder.startTable();
     if (offset_configurations != null) {
@@ -4266,24 +4331,27 @@
   void flushInformative() {}
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    signature.addString(this._name ?? '');
-    signature.addString(this._value ?? '');
-    signature.addString(this._uri ?? '');
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    signatureSink.addString(this._name ?? '');
+    signatureSink.addString(this._value ?? '');
+    signatureSink.addString(this._uri ?? '');
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset? offset_name;
     fb.Offset? offset_uri;
     fb.Offset? offset_value;
-    if (_name != null) {
-      offset_name = fbBuilder.writeString(_name!);
+    var name = _name;
+    if (name != null) {
+      offset_name = fbBuilder.writeString(name);
     }
-    if (_uri != null) {
-      offset_uri = fbBuilder.writeString(_uri!);
+    var uri = _uri;
+    if (uri != null) {
+      offset_uri = fbBuilder.writeString(uri);
     }
-    if (_value != null) {
-      offset_value = fbBuilder.writeString(_value!);
+    var value = _value;
+    if (value != null) {
+      offset_value = fbBuilder.writeString(value);
     }
     fbBuilder.startTable();
     if (offset_name != null) {
@@ -4475,42 +4543,46 @@
   }
 
   /// Accumulate non-[informative] data into [signature].
-  void collectApiSignature(api_sig.ApiSignature signature) {
-    if (this._apiSignature == null) {
-      signature.addInt(0);
+  void collectApiSignature(api_sig.ApiSignature signatureSink) {
+    var apiSignature = this._apiSignature;
+    if (apiSignature == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._apiSignature!.length);
-      for (var x in this._apiSignature!) {
-        signature.addInt(x);
+      signatureSink.addInt(apiSignature.length);
+      for (var x in apiSignature) {
+        signatureSink.addInt(x);
       }
     }
-    if (this._exports == null) {
-      signature.addInt(0);
+    var exports = this._exports;
+    if (exports == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._exports!.length);
-      for (var x in this._exports!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(exports.length);
+      for (var x in exports) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    if (this._imports == null) {
-      signature.addInt(0);
+    var imports = this._imports;
+    if (imports == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._imports!.length);
-      for (var x in this._imports!) {
-        x.collectApiSignature(signature);
+      signatureSink.addInt(imports.length);
+      for (var x in imports) {
+        x.collectApiSignature(signatureSink);
       }
     }
-    signature.addBool(this._hasPartOfDirective == true);
-    if (this._parts == null) {
-      signature.addInt(0);
+    signatureSink.addBool(this._hasPartOfDirective == true);
+    var parts = this._parts;
+    if (parts == null) {
+      signatureSink.addInt(0);
     } else {
-      signature.addInt(this._parts!.length);
-      for (var x in this._parts!) {
-        signature.addString(x);
+      signatureSink.addInt(parts.length);
+      for (var x in parts) {
+        signatureSink.addString(x);
       }
     }
-    signature.addBool(this._hasLibraryDirective == true);
-    signature.addString(this._partOfUri ?? '');
+    signatureSink.addBool(this._hasLibraryDirective == true);
+    signatureSink.addString(this._partOfUri ?? '');
   }
 
   List<int> toBuffer() {
@@ -4525,26 +4597,32 @@
     fb.Offset? offset_lineStarts;
     fb.Offset? offset_partOfUri;
     fb.Offset? offset_parts;
-    if (!(_apiSignature == null || _apiSignature!.isEmpty)) {
-      offset_apiSignature = fbBuilder.writeListUint32(_apiSignature!);
+    var apiSignature = _apiSignature;
+    if (!(apiSignature == null || apiSignature.isEmpty)) {
+      offset_apiSignature = fbBuilder.writeListUint32(apiSignature);
     }
-    if (!(_exports == null || _exports!.isEmpty)) {
-      offset_exports = fbBuilder
-          .writeList(_exports!.map((b) => b.finish(fbBuilder)).toList());
+    var exports = _exports;
+    if (!(exports == null || exports.isEmpty)) {
+      offset_exports =
+          fbBuilder.writeList(exports.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (!(_imports == null || _imports!.isEmpty)) {
-      offset_imports = fbBuilder
-          .writeList(_imports!.map((b) => b.finish(fbBuilder)).toList());
+    var imports = _imports;
+    if (!(imports == null || imports.isEmpty)) {
+      offset_imports =
+          fbBuilder.writeList(imports.map((b) => b.finish(fbBuilder)).toList());
     }
-    if (!(_lineStarts == null || _lineStarts!.isEmpty)) {
-      offset_lineStarts = fbBuilder.writeListUint32(_lineStarts!);
+    var lineStarts = _lineStarts;
+    if (!(lineStarts == null || lineStarts.isEmpty)) {
+      offset_lineStarts = fbBuilder.writeListUint32(lineStarts);
     }
-    if (_partOfUri != null) {
-      offset_partOfUri = fbBuilder.writeString(_partOfUri!);
+    var partOfUri = _partOfUri;
+    if (partOfUri != null) {
+      offset_partOfUri = fbBuilder.writeString(partOfUri);
     }
-    if (!(_parts == null || _parts!.isEmpty)) {
+    var parts = _parts;
+    if (!(parts == null || parts.isEmpty)) {
       offset_parts = fbBuilder
-          .writeList(_parts!.map((b) => fbBuilder.writeString(b)).toList());
+          .writeList(parts.map((b) => fbBuilder.writeString(b)).toList());
     }
     fbBuilder.startTable();
     if (offset_apiSignature != null) {
@@ -4553,12 +4631,8 @@
     if (offset_exports != null) {
       fbBuilder.addOffset(1, offset_exports);
     }
-    if (_hasLibraryDirective == true) {
-      fbBuilder.addBool(6, true);
-    }
-    if (_hasPartOfDirective == true) {
-      fbBuilder.addBool(3, true);
-    }
+    fbBuilder.addBool(6, _hasLibraryDirective == true);
+    fbBuilder.addBool(3, _hasPartOfDirective == true);
     if (offset_imports != null) {
       fbBuilder.addOffset(2, offset_imports);
     }
diff --git a/pkg/analyzer/test/source/analysis_options_provider_test.dart b/pkg/analyzer/test/source/analysis_options_provider_test.dart
index cd96e3e..f139239 100644
--- a/pkg/analyzer/test/source/analysis_options_provider_test.dart
+++ b/pkg/analyzer/test/source/analysis_options_provider_test.dart
@@ -128,7 +128,7 @@
   ignore:
     - bar
 ''');
-    YamlMap options = _getOptions('/foo/bar', crawlUp: true);
+    YamlMap options = _getOptions('/foo/bar');
     expect(options, hasLength(1));
     {
       var analyzer = getValue(options, 'analyzer') as YamlMap;
@@ -149,7 +149,7 @@
   ignore:
     - bar
 ''');
-    YamlMap options = _getOptions('/foo/bar/baz', crawlUp: true);
+    YamlMap options = _getOptions('/foo/bar/baz');
     expect(options, hasLength(1));
     {
       var analyzer = getValue(options, 'analyzer') as YamlMap;
@@ -230,8 +230,8 @@
     }
   }
 
-  YamlMap _getOptions(String posixPath, {bool crawlUp = false}) {
+  YamlMap _getOptions(String posixPath) {
     var resource = pathTranslator.getResource(posixPath) as Folder;
-    return provider.getOptions(resource, crawlUp: crawlUp);
+    return provider.getOptions(resource);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart
index 0584eb2..ff952a9 100644
--- a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart
@@ -18,10 +18,11 @@
   test_await_declaredVariableWrongType() async {
     await assertErrorsInCode('''
 f(Stream<String> stream) async {
-  await for (int i in stream) {}
+  await for (int i in stream) {
+    i;
+  }
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 50, 1),
       error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 55, 6),
     ]);
   }
@@ -30,10 +31,11 @@
     await assertErrorsInCode('''
 f(Stream<String> stream) async {
   int i;
-  await for (i in stream) {}
+  await for (i in stream) {
+    i;
+  }
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 39, 1),
       error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 60, 6),
     ]);
   }
@@ -42,22 +44,45 @@
     await assertErrorsInCode('''
 class Foo<T extends Iterable<int>> {
   void method(T iterable) {
-    for (String i in iterable) {}
+    for (String i in iterable) {
+      i;
+    }
   }
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 81, 1),
       error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 86, 8),
     ]);
   }
 
-  test_declaredVariableWrongType() async {
+  test_declaredVariable_interfaceTypeTypedef_ok() async {
+    await assertNoErrorsInCode('''
+typedef S = String;
+f() {
+  for (S i in <String>[]) {
+    i;
+  }
+}
+''');
+  }
+
+  test_declaredVariable_ok() async {
+    await assertNoErrorsInCode('''
+f() {
+  for (String i in <String>[]) {
+    i;
+  }
+}
+''');
+  }
+
+  test_declaredVariable_wrongType() async {
     await assertErrorsInCode('''
 f() {
-  for (int i in <String>[]) {}
+  for (int i in <String>[]) {
+    i;
+  }
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
       error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 22, 10),
     ]);
   }
@@ -66,10 +91,11 @@
     await assertErrorsInCode('''
 f() {
   int i;
-  for (i in <String>[]) {}
+  for (i in <String>[]) {
+    i;
+  }
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 12, 1),
       error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 27, 10),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
index f1ca1bd..9f5acb2 100644
--- a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
@@ -16,7 +16,9 @@
 
 @reflectiveTest
 class ForInOfInvalidTypeTest extends PubPackageResolutionTest
-    with WithoutNullSafetyMixin {
+    with ForInOfInvalidTypeTestCases, WithoutNullSafetyMixin {}
+
+mixin ForInOfInvalidTypeTestCases on PubPackageResolutionTest {
   test_awaitForIn_dynamic() async {
     await assertNoErrorsInCode('''
 f(dynamic e) async {
@@ -49,6 +51,16 @@
 ''');
   }
 
+  test_forIn_interfaceType_iterable() async {
+    await assertNoErrorsInCode('''
+f(Iterable e) {
+  for (var id in e) {
+    id;
+  }
+}
+''');
+  }
+
   test_forIn_interfaceType_notIterable() async {
     await assertErrorsInCode('''
 f(bool e) {
@@ -63,8 +75,8 @@
 }
 
 @reflectiveTest
-class ForInOfInvalidTypeWithNullSafetyTest extends ForInOfInvalidTypeTest
-    with WithNullSafetyMixin {
+class ForInOfInvalidTypeWithNullSafetyTest extends PubPackageResolutionTest
+    with ForInOfInvalidTypeTestCases {
   test_awaitForIn_never() async {
     await assertErrorsInCode('''
 f(Never e) async {
@@ -79,6 +91,17 @@
 //    assertType(findNode.simple('id;'), 'Never');
   }
 
+  test_forIn_interfaceTypeTypedef_iterable() async {
+    await assertNoErrorsInCode('''
+typedef L = List<String>;
+f(L e) {
+  for (var id in e) {
+    id;
+  }
+}
+''');
+  }
+
   test_forIn_never() async {
     await assertErrorsInCode('''
 f(Never e) {
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index 3dcdf8e..150398a 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -464,13 +464,13 @@
         ]));
   }
 
-  YamlMap _getOptions(String posixPath, {bool crawlUp = false}) {
+  YamlMap _getOptions(String posixPath) {
     var resource = pathTranslator.getResource(posixPath) as Folder;
-    return provider.getOptions(resource, crawlUp: crawlUp);
+    return provider.getOptions(resource);
   }
 
-  AnalysisOptions _getOptionsObject(String posixPath, {bool crawlUp = false}) {
-    final map = _getOptions(posixPath, crawlUp: crawlUp);
+  AnalysisOptions _getOptionsObject(String posixPath) {
+    final map = _getOptions(posixPath);
     final options = AnalysisOptionsImpl();
     applyToAnalysisOptions(options, map);
     return options;
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index a4b1c37..5e37425 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -209,22 +209,25 @@
   void _generateCollectApiSignature() {
     out();
     out('/// Accumulate non-[informative] data into [signature].');
-    out('void collectApiSignature(api_sig.ApiSignature signature) {');
+    out('void collectApiSignature(api_sig.ApiSignature signatureSink) {');
 
-    void writeField(String name, idl_model.FieldType type, bool isInformative) {
-      if (isInformative) {
+    void writeField(idl_model.FieldDeclaration field) {
+      if (field.isInformative) {
         return;
       }
-      String ref = 'this.$name';
+      var type = field.type;
+      var name = field.name;
       if (type.isList) {
-        out('if ($ref == null) {');
+        var localName = name;
+        out('var $name = this._$name;');
+        out('if ($localName == null) {');
         indent(() {
-          out('signature.addInt(0);');
+          out('signatureSink.addInt(0);');
         });
         out('} else {');
         indent(() {
-          out('signature.addInt($ref!.length);');
-          out('for (var x in $ref!) {');
+          out('signatureSink.addInt($localName.length);');
+          out('for (var x in $localName) {');
           indent(() {
             _generateSignatureCall(type.typeName, 'x', false);
           });
@@ -232,7 +235,7 @@
         });
         out('}');
       } else {
-        _generateSignatureCall(type.typeName, ref, true);
+        _generateSignatureCall(type.typeName, 'this._$name', true);
       }
     }
 
@@ -241,7 +244,7 @@
         ..sort((idl_model.FieldDeclaration a, idl_model.FieldDeclaration b) =>
             a.id.compareTo(b.id));
       for (idl_model.FieldDeclaration field in sortedFields) {
-        writeField('_${field.name}', field.type, field.isInformative);
+        writeField(field);
       }
     });
     out('}');
@@ -285,39 +288,39 @@
 
       for (idl_model.FieldDeclaration field in cls.fields) {
         idl_model.FieldType fieldType = field.type;
-        String valueName = '_' + field.name;
+        String valueName = field.name;
         String offsetName = 'offset_' + field.name;
         String? condition;
         String? writeCode;
         if (fieldType.isList) {
-          condition = ' || $valueName!.isEmpty';
+          condition = ' || $valueName.isEmpty';
           if (_idl.classes.containsKey(fieldType.typeName)) {
             String itemCode = 'b.finish(fbBuilder)';
-            String listCode = '$valueName!.map((b) => $itemCode).toList()';
+            String listCode = '$valueName.map((b) => $itemCode).toList()';
             writeCode = '$offsetName = fbBuilder.writeList($listCode);';
           } else if (_idl.enums.containsKey(fieldType.typeName)) {
             String itemCode = 'b.index';
-            String listCode = '$valueName!.map((b) => $itemCode).toList()';
+            String listCode = '$valueName.map((b) => $itemCode).toList()';
             writeCode = '$offsetName = fbBuilder.writeListUint8($listCode);';
           } else if (fieldType.typeName == 'bool') {
-            writeCode = '$offsetName = fbBuilder.writeListBool($valueName!);';
+            writeCode = '$offsetName = fbBuilder.writeListBool($valueName);';
           } else if (fieldType.typeName == 'int') {
-            writeCode = '$offsetName = fbBuilder.writeListUint32($valueName!);';
+            writeCode = '$offsetName = fbBuilder.writeListUint32($valueName);';
           } else if (fieldType.typeName == 'double') {
-            writeCode =
-                '$offsetName = fbBuilder.writeListFloat64($valueName!);';
+            writeCode = '$offsetName = fbBuilder.writeListFloat64($valueName);';
           } else {
             assert(fieldType.typeName == 'String');
             String itemCode = 'fbBuilder.writeString(b)';
-            String listCode = '$valueName!.map((b) => $itemCode).toList()';
+            String listCode = '$valueName.map((b) => $itemCode).toList()';
             writeCode = '$offsetName = fbBuilder.writeList($listCode);';
           }
         } else if (fieldType.typeName == 'String') {
-          writeCode = '$offsetName = fbBuilder.writeString($valueName!);';
+          writeCode = '$offsetName = fbBuilder.writeString($valueName);';
         } else if (_idl.classes.containsKey(fieldType.typeName)) {
-          writeCode = '$offsetName = $valueName!.finish(fbBuilder);';
+          writeCode = '$offsetName = $valueName.finish(fbBuilder);';
         }
         if (writeCode != null) {
+          out('var $valueName = _${field.name};');
           if (condition == null) {
             out('if ($valueName != null) {');
           } else {
@@ -334,33 +337,27 @@
         int index = field.id;
         idl_model.FieldType fieldType = field.type;
         String valueName = '_' + field.name;
-        String condition = '$valueName != null';
-        String? writeCode;
         if (fieldType.isList ||
             fieldType.typeName == 'String' ||
             _idl.classes.containsKey(fieldType.typeName)) {
           String offsetName = 'offset_' + field.name;
-          condition = '$offsetName != null';
-          writeCode = 'fbBuilder.addOffset($index, $offsetName);';
+          out('if ($offsetName != null) {');
+          outWithIndent('fbBuilder.addOffset($index, $offsetName);');
+          out('}');
         } else if (fieldType.typeName == 'bool') {
-          condition = '$valueName == true';
-          writeCode = 'fbBuilder.addBool($index, true);';
+          out('fbBuilder.addBool($index, $valueName == true);');
         } else if (fieldType.typeName == 'double') {
-          condition += ' && $valueName != ${defaultValue(fieldType, true)}';
-          writeCode = 'fbBuilder.addFloat64($index, $valueName);';
+          var defValue = defaultValue(fieldType, true);
+          out('fbBuilder.addFloat64($index, $valueName, $defValue);');
         } else if (fieldType.typeName == 'int') {
-          condition += ' && $valueName != ${defaultValue(fieldType, true)}';
-          writeCode = 'fbBuilder.addUint32($index, $valueName);';
+          var defValue = defaultValue(fieldType, true);
+          out('fbBuilder.addUint32($index, $valueName, $defValue);');
         } else if (_idl.enums.containsKey(fieldType.typeName)) {
-          condition += ' && $valueName != ${defaultValue(fieldType, true)}';
-          writeCode = 'fbBuilder.addUint8($index, $valueName!.index);';
-        }
-        if (writeCode == null) {
+          var defValue = '${defaultValue(fieldType, true)}.index';
+          out('fbBuilder.addUint8($index, $valueName?.index, $defValue);');
+        } else {
           throw UnimplementedError('Writing type ${fieldType.typeName}');
         }
-        out('if ($condition) {');
-        outWithIndent(writeCode);
-        out('}');
       }
       out('return fbBuilder.endTable();');
     });
@@ -441,16 +438,16 @@
   void _generateSignatureCall(String typeName, String ref, bool couldBeNull) {
     if (_idl.enums.containsKey(typeName)) {
       if (couldBeNull) {
-        out('signature.addInt($ref == null ? 0 : $ref!.index);');
+        out('signatureSink.addInt($ref?.index ?? 0);');
       } else {
-        out('signature.addInt($ref.index);');
+        out('signatureSink.addInt($ref.index);');
       }
     } else if (_idl.classes.containsKey(typeName)) {
       if (couldBeNull) {
-        out('signature.addBool($ref != null);');
-        out('$ref?.collectApiSignature(signature);');
+        out('signatureSink.addBool($ref != null);');
+        out('$ref?.collectApiSignature(signatureSink);');
       } else {
-        out('$ref.collectApiSignature(signature);');
+        out('$ref.collectApiSignature(signatureSink);');
       }
     } else {
       switch (typeName) {
@@ -458,25 +455,25 @@
           if (couldBeNull) {
             ref += " ?? ''";
           }
-          out("signature.addString($ref);");
+          out("signatureSink.addString($ref);");
           break;
         case 'int':
           if (couldBeNull) {
             ref += ' ?? 0';
           }
-          out('signature.addInt($ref);');
+          out('signatureSink.addInt($ref);');
           break;
         case 'bool':
           if (couldBeNull) {
             ref += ' == true';
           }
-          out('signature.addBool($ref);');
+          out('signatureSink.addBool($ref);');
           break;
         case 'double':
           if (couldBeNull) {
             ref += ' ?? 0.0';
           }
-          out('signature.addDouble($ref);');
+          out('signatureSink.addDouble($ref);');
           break;
         default:
           throw "Don't know how to generate signature call for $typeName";
diff --git a/pkg/front_end/lib/src/api_prototype/standard_file_system.dart b/pkg/front_end/lib/src/api_prototype/standard_file_system.dart
index bc1a4bc..be0584e 100644
--- a/pkg/front_end/lib/src/api_prototype/standard_file_system.dart
+++ b/pkg/front_end/lib/src/api_prototype/standard_file_system.dart
@@ -8,9 +8,8 @@
 
 import 'dart:io' as io;
 
-import 'file_system.dart';
-
 import '../fasta/compiler_context.dart' show CompilerContext;
+import 'file_system.dart';
 
 /// Concrete implementation of [FileSystem] handling standard URI schemes.
 ///
@@ -64,7 +63,7 @@
   Future<List<int>> readAsBytes() async {
     try {
       CompilerContext.recordDependency(uri);
-      return new io.File.fromUri(uri).readAsBytesSync();
+      return await new io.File.fromUri(uri).readAsBytes();
     } on io.FileSystemException catch (exception) {
       throw _toFileSystemException(exception);
     }
diff --git a/tools/VERSION b/tools/VERSION
index de4905b..4e84a35 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 27
+PRERELEASE 28
 PRERELEASE_PATCH 0
\ No newline at end of file