Version 2.13.0-48.0.dev

Merge commit '6ce172d87fb58e7050bd78bd5e66158fae9de520' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index ca0bcfc..eee3202 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
     "constraint, update this by running tools/generate_package_config.dart."
   ],
   "configVersion": 2,
-  "generated": "2021-02-11T15:59:54.232365",
+  "generated": "2021-02-17T14:49:35.996535",
   "generator": "tools/generate_package_config.dart",
   "packages": [
     {
@@ -779,7 +779,7 @@
       "name": "web_socket_channel",
       "rootUri": "../third_party/pkg/web_socket_channel",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "webdriver",
diff --git a/DEPS b/DEPS
index 5955ccb..2c42fa1 100644
--- a/DEPS
+++ b/DEPS
@@ -166,7 +166,7 @@
   "watcher_rev": "3924194385fb215cef483193ed2879a618a3d69c",
   "webdriver_rev": "5a8d6805d9cf8a3cbb4fcd64849b538b7491e50e",
   "web_components_rev": "8f57dac273412a7172c8ade6f361b407e2e4ed02",
-  "web_socket_channel_rev": "680358915e331fda823908234f80beba1ed4ec83",
+  "web_socket_channel_rev": "76931ea1b81ba71e8319330c35285d3e88566315",
   "WebCore_rev": "fb11e887f77919450e497344da570d780e078bc8",
   "yaml_rev": "2392d113b0104dd19358f2833a282f19e2d67c01",
   "zlib_rev": "bf44340d1b6be1af8950bbdf664fec0cf5a831cc",
diff --git a/pkg/vm_service/lib/src/dart_io_extensions.dart b/pkg/vm_service/lib/src/dart_io_extensions.dart
index 7ab74eb..22581b3 100644
--- a/pkg/vm_service/lib/src/dart_io_extensions.dart
+++ b/pkg/vm_service/lib/src/dart_io_extensions.dart
@@ -6,8 +6,6 @@
 
 import 'dart:collection';
 
-import 'package:vm_service/vm_service.dart';
-
 import 'vm_service.dart';
 
 extension DartIOExtension on VmService {
diff --git a/pkg/vm_service/test/get_cpu_samples_rpc_test.dart b/pkg/vm_service/test/get_cpu_samples_rpc_test.dart
index d90c2f8..37973bc 100644
--- a/pkg/vm_service/test/get_cpu_samples_rpc_test.dart
+++ b/pkg/vm_service/test/get_cpu_samples_rpc_test.dart
@@ -5,7 +5,6 @@
 import 'package:vm_service/vm_service.dart';
 import 'package:test/test.dart';
 
-import 'common/service_test_common.dart';
 import 'common/test_helper.dart';
 
 fib(n) {
diff --git a/pkg/vm_service/test/heap_snapshot_graph_test.dart b/pkg/vm_service/test/heap_snapshot_graph_test.dart
index f04961a..9a65d32 100644
--- a/pkg/vm_service/test/heap_snapshot_graph_test.dart
+++ b/pkg/vm_service/test/heap_snapshot_graph_test.dart
@@ -5,7 +5,6 @@
 import 'package:vm_service/vm_service.dart';
 import 'package:test/test.dart';
 
-import 'common/service_test_common.dart';
 import 'common/test_helper.dart';
 
 class Foo {
diff --git a/pkg/vm_service/test/http_enable_timeline_logging_service_test.dart b/pkg/vm_service/test/http_enable_timeline_logging_service_test.dart
index 1341f1a..0d6f19f 100644
--- a/pkg/vm_service/test/http_enable_timeline_logging_service_test.dart
+++ b/pkg/vm_service/test/http_enable_timeline_logging_service_test.dart
@@ -5,10 +5,8 @@
 import 'dart:async';
 
 import 'package:test/test.dart';
-import 'package:vm_service/src/dart_io_extensions.dart';
 import 'package:vm_service/vm_service.dart';
 
-import 'common/service_test_common.dart';
 import 'common/test_helper.dart';
 
 const String kSetHttpEnableTimelineLogging =
diff --git a/pkg/vm_service/test/network_profiling_test.dart b/pkg/vm_service/test/network_profiling_test.dart
index 21757ad..6fcb5ce 100644
--- a/pkg/vm_service/test/network_profiling_test.dart
+++ b/pkg/vm_service/test/network_profiling_test.dart
@@ -8,10 +8,8 @@
 import 'dart:io' as io;
 
 import 'package:test/test.dart';
-import 'package:vm_service/src/dart_io_extensions.dart';
 import 'package:vm_service/vm_service.dart';
 
-import 'common/service_test_common.dart';
 import 'common/test_helper.dart';
 
 const String content = 'some random content';
diff --git a/pkg/vm_service/test/object_graph_identity_hash_test.dart b/pkg/vm_service/test/object_graph_identity_hash_test.dart
index 15d59ee..a0e8c7d 100644
--- a/pkg/vm_service/test/object_graph_identity_hash_test.dart
+++ b/pkg/vm_service/test/object_graph_identity_hash_test.dart
@@ -6,7 +6,6 @@
 
 import 'package:vm_service/vm_service.dart';
 import 'package:test/test.dart';
-import 'common/service_test_common.dart';
 import 'common/test_helper.dart';
 
 class Foo {}
diff --git a/sdk/lib/ffi/struct.dart b/sdk/lib/ffi/struct.dart
index 283d04c..37fa93c 100644
--- a/sdk/lib/ffi/struct.dart
+++ b/sdk/lib/ffi/struct.dart
@@ -58,3 +58,10 @@
 
   Struct._fromPointer(this._addressOf);
 }
+
+/// Extension on [Struct] specialized for its subtypes.
+extension StructAddressOf<T extends Struct> on T {
+  /// Returns the address backing the reference.
+  @Deprecated('Hold on to the pointer backing a struct instead.')
+  Pointer<T> get addressOf => _addressOf as Pointer<T>;
+}
diff --git a/tests/ffi/structs_nnbd_workaround_test.dart b/tests/ffi/structs_nnbd_workaround_test.dart
index 635c877..cf8f672 100644
--- a/tests/ffi/structs_nnbd_workaround_test.dart
+++ b/tests/ffi/structs_nnbd_workaround_test.dart
@@ -98,6 +98,8 @@
   final pointer = calloc<Coordinate>();
   Coordinate c = pointer.ref;
   Expect.isTrue(c is Struct);
+  // TODO(https://dartbug.com/40667): Remove support for this.
+  Expect.isTrue(c.addressOf is Pointer<Coordinate>);
   calloc.free(pointer);
 }
 
diff --git a/tests/ffi/structs_test.dart b/tests/ffi/structs_test.dart
index ba90416..77026a4 100644
--- a/tests/ffi/structs_test.dart
+++ b/tests/ffi/structs_test.dart
@@ -128,6 +128,8 @@
   final pointer = calloc<Coordinate>();
   Coordinate c = pointer.ref;
   Expect.isTrue(c is Struct);
+  // TODO(https://dartbug.com/40667): Remove support for this.
+  Expect.isTrue(c.addressOf is Pointer<Coordinate>);
   calloc.free(pointer);
 }
 
diff --git a/tests/ffi_2/structs_test.dart b/tests/ffi_2/structs_test.dart
index ba90416..77026a4 100644
--- a/tests/ffi_2/structs_test.dart
+++ b/tests/ffi_2/structs_test.dart
@@ -128,6 +128,8 @@
   final pointer = calloc<Coordinate>();
   Coordinate c = pointer.ref;
   Expect.isTrue(c is Struct);
+  // TODO(https://dartbug.com/40667): Remove support for this.
+  Expect.isTrue(c.addressOf is Pointer<Coordinate>);
   calloc.free(pointer);
 }
 
diff --git a/tools/VERSION b/tools/VERSION
index 900cdf2..cfed773 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 47
+PRERELEASE 48
 PRERELEASE_PATCH 0
\ No newline at end of file