diff --git a/pkg/analyzer/lib/src/dart/analysis/session.dart b/pkg/analyzer/lib/src/dart/analysis/session.dart
index acdf27e..545417e 100644
--- a/pkg/analyzer/lib/src/dart/analysis/session.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/session.dart
@@ -57,63 +57,51 @@
   @override
   Future<SomeErrorsResult> getErrors(String path) async {
     _checkConsistency();
-    try {
-      return await _driver.getErrors(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getErrors(path);
+    _checkConsistency();
+    return result;
   }
 
   @Deprecated('Use getFile2() instead')
   @override
   SomeFileResult getFile(String path) {
     _checkConsistency();
-    try {
-      return _driver.getFileSync(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = _driver.getFileSync(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeFileResult> getFile2(String path) async {
     _checkConsistency();
-    try {
-      return await _driver.getFile(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getFile(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeLibraryElementResult> getLibraryByUri(String uri) async {
     _checkConsistency();
-    try {
-      return await _driver.getLibraryByUri(uri);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getLibraryByUri(uri);
+    _checkConsistency();
+    return result;
   }
 
   @Deprecated('Use getParsedLibrary2() instead')
   @override
   SomeParsedLibraryResult getParsedLibrary(String path) {
     _checkConsistency();
-    try {
-      return _driver.getParsedLibrary(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = _driver.getParsedLibrary(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeParsedLibraryResult> getParsedLibrary2(String path) async {
     _checkConsistency();
-    try {
-      return await _driver.getParsedLibrary2(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getParsedLibrary2(path);
+    _checkConsistency();
+    return result;
   }
 
   @Deprecated('Use getParsedLibraryByElement2() instead')
@@ -125,11 +113,9 @@
       return NotElementOfThisSessionResult();
     }
 
-    try {
-      return _driver.getParsedLibraryByUri(element.source.uri);
-    } finally {
-      _checkConsistency();
-    }
+    var result = _driver.getParsedLibraryByUri(element.source.uri);
+    _checkConsistency();
+    return result;
   }
 
   @override
@@ -142,42 +128,34 @@
       return NotElementOfThisSessionResult();
     }
 
-    try {
-      return await _driver.getParsedLibraryByUri2(element.source.uri);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getParsedLibraryByUri2(element.source.uri);
+    _checkConsistency();
+    return result;
   }
 
   @Deprecated('Use getParsedUnit2() instead')
   @override
   SomeParsedUnitResult getParsedUnit(String path) {
     _checkConsistency();
-    try {
-      return _driver.parseFileSync(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = _driver.parseFileSync(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeParsedUnitResult> getParsedUnit2(String path) async {
     _checkConsistency();
-    try {
-      return await _driver.parseFile(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.parseFile(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeResolvedLibraryResult> getResolvedLibrary(String path) async {
     _checkConsistency();
-    try {
-      return await _driver.getResolvedLibrary(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getResolvedLibrary(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
@@ -190,31 +168,25 @@
       return NotElementOfThisSessionResult();
     }
 
-    try {
-      return await _driver.getResolvedLibraryByUri(element.source.uri);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getResolvedLibraryByUri(element.source.uri);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeResolvedUnitResult> getResolvedUnit(String path) async {
     _checkConsistency();
-    try {
-      return await _driver.getResult(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = await _driver.getResult(path);
+    _checkConsistency();
+    return result;
   }
 
   @override
   Future<SomeUnitElementResult> getUnitElement(String path) {
     _checkConsistency();
-    try {
-      return _driver.getUnitElement(path);
-    } finally {
-      _checkConsistency();
-    }
+    var result = _driver.getUnitElement(path);
+    _checkConsistency();
+    return result;
   }
 
   /// Check to see that results from this session will be consistent, and throw
diff --git a/runtime/tests/vm/dart/regress_48522_test.dart b/runtime/tests/vm/dart/regress_48522_test.dart
new file mode 100644
index 0000000..d01562b
--- /dev/null
+++ b/runtime/tests/vm/dart/regress_48522_test.dart
@@ -0,0 +1,55 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Regression test for https://github.com/dart-lang/sdk/issues/48522.
+// Test that FutureOr<T?> = FutureOr<T?>? <: Future<T?>?.
+
+import 'dart:async';
+
+import 'package:expect/expect.dart';
+
+Future<String?>? foo() {
+  return null;
+}
+
+FutureOr<String?>? bar() {
+  return null;
+}
+
+FutureOr<String?> baz() {
+  return null;
+}
+
+typedef F = FutureOr<String?> Function();
+typedef G = FutureOr<String?>? Function();
+
+void main() {
+  // Check Future<T?>? <: FutureOr<T?>?.
+  print(foo.runtimeType);
+  Expect.isTrue(foo is G);
+  (foo as dynamic) as G; // Should not throw.
+
+  final G v1 = foo;
+  print(v1.runtimeType);
+  Expect.isTrue(v1 is G);
+  (v1 as dynamic) as G; // Should not throw.
+
+  // Check Future<T?>? <: FutureOr<T?>.
+  print(foo.runtimeType);
+  Expect.isTrue(foo is F);
+  (foo as dynamic) as F; // Should not throw.
+
+  final F v2 = foo;
+  print(v2.runtimeType);
+  Expect.isTrue(v2 is F);
+  (v2 as dynamic) as F; // Should not throw.
+
+  // Check FutureOr<T?> = FutureOr<T?>?.
+  print(bar.runtimeType);
+  Expect.isTrue(bar is F);
+  (bar as dynamic) as F; // Should not throw.
+  print(baz.runtimeType);
+  Expect.isTrue(baz is G);
+  (baz as dynamic) as G; // Should not throw.
+}
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 241097c..4b789f8 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -19847,8 +19847,14 @@
       ASSERT(object_store->nullable_future_null_type() != Type::null());
       return object_store->nullable_future_null_type();
     }
-    if (IsNullable() && unwrapped_type.IsNullable()) {
-      return Type::Cast(*this).ToNullability(Nullability::kNonNullable, space);
+    // To avoid having to special case FutureOr in nullability checks, we lift
+    // the nullability of the type argument to FutureOr as appropriate.
+    if (IsNullable() || unwrapped_type.IsNullable()) {
+      // FutureOr<T?> = FutureOr<T?>* = FutureOr<T?>?, so mark as nullable.
+      return Type::Cast(*this).ToNullability(Nullability::kNullable, space);
+    } else if (unwrapped_type.IsLegacy()) {
+      // FutureOr<T*> = FutureOr<T*>*, so mark as legacy.
+      return Type::Cast(*this).ToNullability(Nullability::kLegacy, space);
     }
   }
   return ptr();
diff --git a/tools/VERSION b/tools/VERSION
index 8c45d2b..14c3783 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 204
+PRERELEASE 205
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/bot_utils.py b/tools/bots/bot_utils.py
index 58f136d..a010a6f 100755
--- a/tools/bots/bot_utils.py
+++ b/tools/bots/bot_utils.py
@@ -39,6 +39,19 @@
     'arm64': 'arm64',
 }
 
+SYSTEM_TO_CIPD = {
+    'windows': 'windows',
+    'linux': 'linux',
+    'macos': 'mac',
+}
+
+ARCH_TO_CIPD = {
+    'ia32': '386',
+    'x64': 'amd64',
+    'arm': 'arm6l',
+    'arm64': 'arm64',
+}
+
 
 class Channel(object):
     BETA = 'beta'
diff --git a/tools/bots/dart_sdk.py b/tools/bots/dart_sdk.py
index 934906f..7f6bfb4 100755
--- a/tools/bots/dart_sdk.py
+++ b/tools/bots/dart_sdk.py
@@ -19,6 +19,21 @@
                         utils.GetBuildRoot(BUILD_OS, build_mode, arch), path)
 
 
+def UploadFlutterCipd(arch, sdk_path, channel):
+    cipd_os = bot_utils.SYSTEM_TO_CIPD[BUILD_OS]
+    cipd_arch = bot_utils.ARCH_TO_CIPD[arch]
+    cipd_platform = cipd_os + '-' + cipd_arch
+    version = utils.GetVersion()
+    name = 'flutter/dart-sdk/%s' % cipd_platform
+    version_tag = 'version:%s' % version
+    git_tag = 'git_revision:%s' % utils.GetGitRevision()
+    bot_utils.run([
+        'cipd', 'create', '-name', name, '-in', sdk_path, '-install-mode',
+        'copy', '-tag', version_tag, '-tag', git_tag, '-ref', channel,
+        '-preserve-writable'
+    ])
+
+
 def BuildDartdocAPIDocs(dirname):
     dart_sdk = BuildRootPath('dart-sdk')
     dart_exe = os.path.join(dart_sdk, 'bin', 'dart')
@@ -234,6 +249,8 @@
             sdk_path = BuildRootPath('dart-sdk', arch=arch)
             CreateAndUploadSDKZip(arch, sdk_path)
             DartArchiveUnstrippedBinaries(arch)
+            if CHANNEL != bot_utils.Channel.BLEEDING_EDGE:
+                UploadFlutterCipd(arch, sdk_path, CHANNEL)
         if BUILD_OS == 'linux':
             CreateUploadVersionFile()
     else:
