diff --git a/DEPS b/DEPS
index 613addf..6cd7c74 100644
--- a/DEPS
+++ b/DEPS
@@ -172,7 +172,7 @@
   "web_components_rev": "8f57dac273412a7172c8ade6f361b407e2e4ed02",
   "web_socket_channel_rev": "6448ce532445a8a458fa191d9346df071ae0acad",
   "WebCore_rev": "fb11e887f77919450e497344da570d780e078bc8",
-  "webdev_rev": "b0aae7b6944d484722e6af164abedd864a2a0afa",
+  "webdev_rev": "50fe70a3137d9665fbe94cd34af5277b65d95079",
   "webkit_inspection_protocol_rev": "dd6fb5d8b536e19cedb384d0bbf1f5631923f1e8",
   "yaml_rev": "b4c4411631bda556ce9a45af1ab0eecaf9f3ac53",
   "zlib_rev": "bf44340d1b6be1af8950bbdf664fec0cf5a831cc",
diff --git a/pkg/analysis_server/test/services/search/hierarchy_test.dart b/pkg/analysis_server/test/services/search/hierarchy_test.dart
index 4af0fe9..9ac31f4 100644
--- a/pkg/analysis_server/test/services/search/hierarchy_test.dart
+++ b/pkg/analysis_server/test/services/search/hierarchy_test.dart
@@ -363,7 +363,10 @@
             'toString',
             'hashCode',
             'noSuchMethod',
-            'runtimeType'
+            'runtimeType',
+            'hash',
+            'hashAll',
+            'hashAllUnordered',
           ]));
     }
     {
@@ -380,7 +383,10 @@
             'toString',
             'hashCode',
             'noSuchMethod',
-            'runtimeType'
+            'runtimeType',
+            'hash',
+            'hashAll',
+            'hashAllUnordered',
           ]));
     }
   }
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index 5c7a513..44388f6 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -422,7 +422,7 @@
     var target = objectElement.getMethod(nameNode.name);
 
     var hasMatchingObjectMethod = false;
-    if (target is MethodElement) {
+    if (target is MethodElement && !target.isStatic) {
       var arguments = node.argumentList.arguments;
       hasMatchingObjectMethod = arguments.length == target.parameters.length &&
           !arguments.any((e) => e is NamedExpression);
diff --git a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
index 4ffbaaa..6183525 100644
--- a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
@@ -73,7 +73,10 @@
     receiverType = _resolveTypeParameter(receiverType, ifLegacy: true);
 
     if (_typeSystem.isDynamicBounded(receiverType)) {
-      _lookupInterfaceType(_typeProvider.objectType);
+      _lookupInterfaceType(
+        _typeProvider.objectType,
+        recoverWithStatic: false,
+      );
       _needsGetterError = false;
       _needsSetterError = false;
       return _toResult();
@@ -207,7 +210,10 @@
     }
   }
 
-  void _lookupInterfaceType(InterfaceType type) {
+  void _lookupInterfaceType(
+    InterfaceType type, {
+    bool recoverWithStatic = true,
+  }) {
     var isSuper = _receiver is SuperExpression;
 
     var getterName = Name(_definingLibrary.source.uri, _name);
@@ -215,7 +221,7 @@
         _resolver.inheritance.getMember(type, getterName, forSuper: isSuper);
     _needsGetterError = _getterRequested == null;
 
-    if (_getterRequested == null) {
+    if (_getterRequested == null && recoverWithStatic) {
       var classElement = type.element as AbstractClassElementImpl;
       _getterRecovery ??=
           classElement.lookupStaticGetter(_name, _definingLibrary) ??
@@ -228,7 +234,7 @@
         _resolver.inheritance.getMember(type, setterName, forSuper: isSuper);
     _needsSetterError = _setterRequested == null;
 
-    if (_setterRequested == null) {
+    if (_setterRequested == null && recoverWithStatic) {
       var classElement = type.element as AbstractClassElementImpl;
       _setterRecovery ??=
           classElement.lookupStaticSetter(_name, _definingLibrary);
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
index b20ece0..47cc45d0 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
@@ -521,6 +521,10 @@
 
   external String toString();
   external dynamic noSuchMethod(Invocation invocation);
+
+  static int hash(Object? object1, Object? object2) => 0;
+  static int hashAll(Iterable<Object?> objects) => 0;
+  static int hashAllUnordered(Iterable<Object?> objects) => 0;
 }
 
 abstract class Enum {
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index a76e41a..f094945 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -1410,6 +1410,21 @@
     assertType(findNode.binary('1 + 2'), 'int');
   }
 
+  test_hasReceiver_dynamic_hash() async {
+    await assertNoErrorsInCode(r'''
+void f(dynamic a) {
+  a.hash(0, 1);
+}
+''');
+    assertMethodInvocation2(
+      findNode.methodInvocation('hash('),
+      element: null,
+      typeArgumentTypes: [],
+      invokeType: 'dynamic',
+      type: 'dynamic',
+    );
+  }
+
   test_hasReceiver_functionTyped() async {
     await assertNoErrorsInCode(r'''
 void foo(int _) {}
diff --git a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
index e3ef89b..d209f0c 100644
--- a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
@@ -422,6 +422,105 @@
     );
   }
 
+  test_ofDynamic_read_hash() async {
+    await assertNoErrorsInCode('''
+void f(dynamic a) {
+  (a).hash;
+}
+''');
+
+    var propertyAccess = findNode.propertyAccess('hash;');
+    assertPropertyAccess2(
+      propertyAccess,
+      element: null,
+      type: 'dynamic',
+    );
+
+    assertSimpleIdentifier(
+      propertyAccess.propertyName,
+      element: null,
+      type: 'dynamic',
+    );
+  }
+
+  test_ofDynamic_read_hashCode() async {
+    await assertNoErrorsInCode('''
+void f(dynamic a) {
+  (a).hashCode;
+}
+''');
+
+    var hashCodeElement = elementMatcher(
+      objectElement.getGetter('hashCode'),
+      isLegacy: isLegacyLibrary,
+    );
+
+    var propertyAccess = findNode.propertyAccess('hashCode;');
+    assertPropertyAccess2(
+      propertyAccess,
+      element: hashCodeElement,
+      type: 'int',
+    );
+
+    assertSimpleIdentifier(
+      propertyAccess.propertyName,
+      element: hashCodeElement,
+      type: 'int',
+    );
+  }
+
+  test_ofDynamic_read_runtimeType() async {
+    await assertNoErrorsInCode('''
+void f(dynamic a) {
+  (a).runtimeType;
+}
+''');
+
+    var runtimeTypeElement = elementMatcher(
+      objectElement.getGetter('runtimeType'),
+      isLegacy: isLegacyLibrary,
+    );
+
+    var propertyAccess = findNode.propertyAccess('runtimeType;');
+    assertPropertyAccess2(
+      propertyAccess,
+      element: runtimeTypeElement,
+      type: 'Type',
+    );
+
+    assertSimpleIdentifier(
+      propertyAccess.propertyName,
+      element: runtimeTypeElement,
+      type: 'Type',
+    );
+  }
+
+  test_ofDynamic_read_toString() async {
+    await assertNoErrorsInCode('''
+void f(dynamic a) {
+  (a).toString;
+}
+''');
+
+    var toStringElement = elementMatcher(
+      objectElement.getMethod('toString'),
+      isLegacy: isLegacyLibrary,
+    );
+
+    var propertyAccess = findNode.propertyAccess('toString;');
+    assertPropertyAccess2(
+      propertyAccess,
+      element: toStringElement,
+      type: 'String Function()',
+    );
+
+    assertSimpleIdentifier(
+      propertyAccess.propertyName,
+      element: toStringElement,
+      type: 'String Function()',
+    );
+  }
+
   test_ofExtension_read() async {
     await assertNoErrorsInCode('''
 class A {}
diff --git a/pkg/dartdev/lib/src/sdk.dart b/pkg/dartdev/lib/src/sdk.dart
index 426f810..833df09 100644
--- a/pkg/dartdev/lib/src/sdk.dart
+++ b/pkg/dartdev/lib/src/sdk.dart
@@ -39,8 +39,11 @@
 /// A utility class for finding and referencing paths within the Dart SDK.
 class Sdk {
   final String sdkPath;
+  final String version;
 
-  Sdk() : sdkPath = _computeSdkPath;
+  Sdk()
+      : sdkPath = _computeSdkPath,
+        version = Runtime.runtime.version;
 
   // Assume that we want to use the same Dart executable that we used to spawn
   // DartDev. We should be able to run programs with out/ReleaseX64/dart even
@@ -97,25 +100,20 @@
   static Runtime runtime = Runtime._();
 
   // Match "2.10.0-edge.0b2da6e7 (be) ...".
-  static RegExp channelRegex = RegExp(r'.* \(([\d\w]+)\) .*');
+  static final RegExp _channelRegex = RegExp(r'.* \(([\d\w]+)\) .*');
 
-  String _channel;
-
-  Runtime._() {
-    _parseVersion();
-  }
+  /// The SDK's version number (x.y.z-a.b.channel).
+  final String version;
 
   /// The SDK's release channel (`be`, `dev`, `beta`, `stable`).
-  String get channel => _channel;
+  final String channel;
 
-  /// Return whether the SDK is from the stable release channel.
-  bool get stableChannel => channel == 'stable';
+  Runtime._()
+      : version = _computeVersion(Platform.version),
+        channel = _computeChannel(Platform.version);
 
-  void _parseVersion() {
-    final version = Platform.version;
-    final match = channelRegex.firstMatch(version);
-    if (match != null) {
-      _channel = match.group(1);
-    }
-  }
+  static String _computeVersion(String version) =>
+      version.substring(0, version.indexOf(' '));
+  static String _computeChannel(String version) =>
+      _channelRegex.firstMatch(version)?.group(1);
 }
diff --git a/pkg/dartdev/lib/src/templates/common.dart b/pkg/dartdev/lib/src/templates/common.dart
index 2aac572..ac53756 100644
--- a/pkg/dartdev/lib/src/templates/common.dart
+++ b/pkg/dartdev/lib/src/templates/common.dart
@@ -2,7 +2,13 @@
 // 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.
 
-final String gitignore = '''
+import '../sdk.dart';
+
+String get sdkConstraint => '''
+  sdk: '>=${sdk.version} <3.0.0'
+''';
+
+const String gitignore = '''
 # Files and directories created by pub.
 .dart_tool/
 .packages
@@ -11,7 +17,7 @@
 build/
 ''';
 
-final String analysisOptions = '''
+const String analysisOptions = '''
 # This file configures the static analysis results for your project (errors,
 # warnings, and lints).
 #
@@ -44,7 +50,7 @@
 # https://dart.dev/guides/language/analysis-options
 ''';
 
-final String changelog = '''
+const String changelog = '''
 ## 1.0.0
 
 - Initial version.
diff --git a/pkg/dartdev/lib/src/templates/console_full.dart b/pkg/dartdev/lib/src/templates/console_full.dart
index 5797c9a..553ceeb 100644
--- a/pkg/dartdev/lib/src/templates/console_full.dart
+++ b/pkg/dartdev/lib/src/templates/console_full.dart
@@ -38,7 +38,7 @@
 # homepage: https://www.example.com
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+${common.sdkConstraint}
 
 # dependencies:
 #   path: ^1.8.0
diff --git a/pkg/dartdev/lib/src/templates/console_simple.dart b/pkg/dartdev/lib/src/templates/console_simple.dart
index 376249b..5c6d381 100644
--- a/pkg/dartdev/lib/src/templates/console_simple.dart
+++ b/pkg/dartdev/lib/src/templates/console_simple.dart
@@ -36,7 +36,7 @@
 # homepage: https://www.example.com
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+${common.sdkConstraint}
 
 # dependencies:
 #   path: ^1.8.0
diff --git a/pkg/dartdev/lib/src/templates/package_simple.dart b/pkg/dartdev/lib/src/templates/package_simple.dart
index efe98f9..591f110 100644
--- a/pkg/dartdev/lib/src/templates/package_simple.dart
+++ b/pkg/dartdev/lib/src/templates/package_simple.dart
@@ -55,7 +55,7 @@
 # homepage: https://www.example.com
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+${common.sdkConstraint}
 
 # dependencies:
 #   path: ^1.8.0
diff --git a/pkg/dartdev/lib/src/templates/server_shelf.dart b/pkg/dartdev/lib/src/templates/server_shelf.dart
index 45873bc..ed6b730 100644
--- a/pkg/dartdev/lib/src/templates/server_shelf.dart
+++ b/pkg/dartdev/lib/src/templates/server_shelf.dart
@@ -42,7 +42,7 @@
 # homepage: https://www.example.com
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+${common.sdkConstraint}
 
 dependencies:
   args: ^2.0.0
diff --git a/pkg/dartdev/lib/src/templates/web_simple.dart b/pkg/dartdev/lib/src/templates/web_simple.dart
index 4bceae1..2dde7de 100644
--- a/pkg/dartdev/lib/src/templates/web_simple.dart
+++ b/pkg/dartdev/lib/src/templates/web_simple.dart
@@ -42,7 +42,7 @@
 # homepage: https://www.example.com
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+${common.sdkConstraint}
 
 # dependencies:
 #   path: ^1.7.0
diff --git a/tools/VERSION b/tools/VERSION
index 8741365..afb109a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 14
 PATCH 0
 PRERELEASE 377
-PRERELEASE_PATCH 4
\ No newline at end of file
+PRERELEASE_PATCH 7
\ No newline at end of file
