Issue #399: added tests for overriding access in the static extension methods.
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_t01.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_t01.dart
index 77f787d..4959e4b 100644
--- a/LanguageFeatures/Extension-methods/extension_conflict_resolution_t01.dart
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_t01.dart
@@ -37,4 +37,6 @@
   bool equals(T value) => true;
 }
 
-main() {}
+main() {
+  "123".equals(123);
+}
diff --git a/LanguageFeatures/Extension-methods/overriding_access_A01_t01.dart b/LanguageFeatures/Extension-methods/overriding_access_A01_t01.dart
new file mode 100644
index 0000000..40de9b7
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/overriding_access_A01_t01.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+/**
+ * @assertion If two or more extensions apply to the same member access, or if a
+ * member of the receiver type takes precedence over an extension method, or if
+ * the extension is imported with a prefix, then it is possible to force an
+ * extension member invocation:
+ *
+ *   MyList(object).quickSort();
+ *
+ * @description Check that if several extensions can be applied to the same
+ * member access, it's possible to force an extension member invocation
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+
+extension Ext1 {
+  bool get isExt1 => true;
+}
+
+extension Ext2 {
+  bool get isExt1 => false;
+}
+
+main() {
+  String test = "";
+  Expect.isTrue(Ext1(test).isExt1);
+  Expect.isFalse(Ext2(test).isExt1);
+}
diff --git a/LanguageFeatures/Extension-methods/overriding_access_A01_t02.dart b/LanguageFeatures/Extension-methods/overriding_access_A01_t02.dart
new file mode 100644
index 0000000..b009484
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/overriding_access_A01_t02.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+/**
+ * @assertion If two or more extensions apply to the same member access, or if a
+ * member of the receiver type takes precedence over an extension method, or if
+ * the extension is imported with a prefix, then it is possible to force an
+ * extension member invocation:
+ *
+ *   MyList(object).quickSort();
+ *
+ * @description Check that if several extensions can be applied to the same
+ * member access, it's possible to force an extension member invocation
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+
+extension Ext1 on String {
+  bool get isExt1 => true;
+}
+
+extension Ext2 on String {
+  bool get isExt1 => false;
+}
+
+main() {
+  String test = "";
+  Expect.isTrue(Ext1(test).isExt1);
+  Expect.isFalse(Ext2(test).isExt1);
+}
diff --git a/LanguageFeatures/Extension-methods/overriding_access_A01_t03.dart b/LanguageFeatures/Extension-methods/overriding_access_A01_t03.dart
new file mode 100644
index 0000000..4315ac3
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/overriding_access_A01_t03.dart
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+/**
+ * @assertion If two or more extensions apply to the same member access, or if a
+ * member of the receiver type takes precedence over an extension method, or if
+ * the extension is imported with a prefix, then it is possible to force an
+ * extension member invocation:
+ *
+ *   MyList(object).quickSort();
+ *
+ * @description Check that if several extensions can be applied to the same
+ * member access, it's possible to force an extension member invocation
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+
+extension Ext1<T extends int> on List<T> {
+  bool get isExt1 => true;
+}
+
+extension Ext2<T extends num> on List<T> {
+  bool get isExt1 => false;
+}
+
+main() {
+  List<int> list = <int>[1, 2, 3];
+
+  Expect.isTrue(Ext1(list).isExt1());
+  Expect.isTrue(Ext1<int>(list).isExt1());
+
+  Expect.isFalse(Ext2(list).isExt1());
+  Expect.isFalse(Ext2<num>(list).isExt1());
+  Expect.isFalse(Ext2<int>(list).isExt1());
+}
diff --git a/LanguageFeatures/Extension-methods/overriding_access_A01_t04.dart b/LanguageFeatures/Extension-methods/overriding_access_A01_t04.dart
new file mode 100644
index 0000000..ed80298
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/overriding_access_A01_t04.dart
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+/**
+ * @assertion If two or more extensions apply to the same member access, or if a
+ * member of the receiver type takes precedence over an extension method, or if
+ * the extension is imported with a prefix, then it is possible to force an
+ * extension member invocation:
+ *
+ *   MyList(object).quickSort();
+ *
+ * @description Check that if several extensions can be applied to the same
+ * member access, it's possible to force an extension member invocation if a
+ * member of the receiver type takes precedence over an extension method
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+
+class C<T> {}
+
+class X {}
+class Y extends X {}
+class Z extends Y {}
+
+extension Ext<T> on C<T> {
+  dynamic getType isX => T;
+}
+
+
+main() {
+  C c = C();
+  C<X> x = C<X>();
+  C<Y> y = C<Y>();
+  C<Z> z = C<Z>();
+
+  Expect.equals(dynamic, Ext(c).getType);
+
+  Expect.equals(X, Ext(x).getType);
+  Expect.equals(Object, Ext<Object>(x).getType);
+  Expect.equals(X, Ext<X>(x).getType);
+
+  Expect.equals(Y, Ext(y).getType);
+  Expect.equals(Object, Ext<Object>(y).getType);
+  Expect.equals(X, Ext<X>(y).getType);
+  Expect.equals(Y, Ext<Y>(y).getType);
+
+  Expect.equals(Z, Ext(z).getType);
+  Expect.equals(Object, Ext<Object>(z).getType);
+  Expect.equals(X, Ext<X>(z).getType);
+  Expect.equals(Y, Ext<Y>(z).getType);
+  Expect.equals(Z, Ext<Z>(z).getType);
+}