Fixed Issues #398: tests for static extension methods added: extension conflict resolution.
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t01.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t01.dart
index af4f776..221dc01 100644
--- a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t01.dart
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t01.dart
@@ -8,6 +8,20 @@
  * invocation, then we resort to a heuristic to choose one of the extensions to
  * apply. If exactly one of them is "more specific" than all the others, that
  * one is chosen. Otherwise it is a compile-time error.
+ *
+ * An extension with [on] type clause [T1] is more specific than another
+ * extension with [on] type clause [T2] iff
+ *
+ *   1. The latter extension is declared in a platform library, and the former
+ *      extension is not
+ *   2. they are both declared in platform libraries or both declared in
+ *      non-platform libraries, and
+ *   3. the instantiated type (the type after applying type inference from the
+ *      receiver) of [T1] is a subtype of the instantiated type of [T2] and
+ *      either
+ *   4. not vice versa, or
+ *   5. the instantiate-to-bounds type of [T1] is a subtype of the
+ *      instantiate-to-bounds type of [T2] and not vice versa.
  * @description Check that compile time error is thrown if two extension members
  * are equitable
  * @compile-error
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A02_t01.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t02.dart
similarity index 64%
rename from LanguageFeatures/Extension-methods/extension_conflict_resolution_A02_t01.dart
rename to LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t02.dart
index ad87198..a134bfa 100644
--- a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A02_t01.dart
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t02.dart
@@ -8,13 +8,22 @@
  * invocation, then we resort to a heuristic to choose one of the extensions to
  * apply. If exactly one of them is "more specific" than all the others, that
  * one is chosen. Otherwise it is a compile-time error.
+ *
  * An extension with [on] type clause [T1] is more specific than another
  * extension with [on] type clause [T2] iff
+ *
  *   1. The latter extension is declared in a platform library, and the former
- *   extension is not
- * @description Check that compile time error is thrown if two extension members
- * are equitable
- * @compile-error
+ *      extension is not
+ *   2. they are both declared in platform libraries or both declared in
+ *      non-platform libraries, and
+ *   3. the instantiated type (the type after applying type inference from the
+ *      receiver) of [T1] is a subtype of the instantiated type of [T2] and
+ *      either
+ *   4. not vice versa, or
+ *   5. the instantiate-to-bounds type of [T1] is a subtype of the
+ *      instantiate-to-bounds type of [T2] and not vice versa.
+ * @description Check that extension from the library is less specific than one
+ * which is not.
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=extension-methods
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t03.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t03.dart
new file mode 100644
index 0000000..0cb0069
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t03.dart
@@ -0,0 +1,42 @@
+/*
+ * 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 more than one extension applies to a specific member
+ * invocation, then we resort to a heuristic to choose one of the extensions to
+ * apply. If exactly one of them is "more specific" than all the others, that
+ * one is chosen. Otherwise it is a compile-time error.
+ *
+ * An extension with [on] type clause [T1] is more specific than another
+ * extension with [on] type clause [T2] iff
+ *
+ *   1. The latter extension is declared in a platform library, and the former
+ *      extension is not
+ *   2. they are both declared in platform libraries or both declared in
+ *      non-platform libraries, and
+ *   3. the instantiated type (the type after applying type inference from the
+ *      receiver) of [T1] is a subtype of the instantiated type of [T2] and
+ *      either
+ *   4. not vice versa, or
+ *   5. the instantiate-to-bounds type of [T1] is a subtype of the
+ *      instantiate-to-bounds type of [T2] and not vice versa.
+ * @description Check that extension from the library is less specific than one
+ * which is not.
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "extension_conflict_resolution_lib.dart";
+import "../../Utils/expect.dart";
+
+extension MyIntList<T extends int> on List<T> {
+  bool get isIntLibraryVersion => false;
+}
+
+main() {
+  List<int> aList = [0];
+  Expect.isFalse(aList.isIntLibraryVersion);
+  Expect.isTrue(aList.isNumLibraryVersion);
+}
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t04.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t04.dart
new file mode 100644
index 0000000..900fa58
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t04.dart
@@ -0,0 +1,41 @@
+/*
+ * 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 more than one extension applies to a specific member
+ * invocation, then we resort to a heuristic to choose one of the extensions to
+ * apply. If exactly one of them is "more specific" than all the others, that
+ * one is chosen. Otherwise it is a compile-time error.
+ *
+ * An extension with [on] type clause [T1] is more specific than another
+ * extension with [on] type clause [T2] iff
+ *
+ *   1. The latter extension is declared in a platform library, and the former
+ *      extension is not
+ *   2. they are both declared in platform libraries or both declared in
+ *      non-platform libraries, and
+ *   3. the instantiated type (the type after applying type inference from the
+ *      receiver) of [T1] is a subtype of the instantiated type of [T2] and
+ *      either
+ *   4. not vice versa, or
+ *   5. the instantiate-to-bounds type of [T1] is a subtype of the
+ *      instantiate-to-bounds type of [T2] and not vice versa.
+ * @description Check that extension from the library is less specific than one
+ * which is not.
+ * @compile-error
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "extension_conflict_resolution_lib.dart";
+
+extension MyIntFancyList<T extends String> on List<T> {
+  bool get isIntLibraryVersion => false;
+}
+
+main() {
+  List<int> aList = <int>[1, 2, 3];
+  bool ret = aList.isIntLibraryVersion;
+}
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t05.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t05.dart
new file mode 100644
index 0000000..207336b
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_A01_t05.dart
@@ -0,0 +1,43 @@
+/*
+ * 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 more than one extension applies to a specific member
+ * invocation, then we resort to a heuristic to choose one of the extensions to
+ * apply. If exactly one of them is "more specific" than all the others, that
+ * one is chosen. Otherwise it is a compile-time error.
+ *
+ * An extension with [on] type clause [T1] is more specific than another
+ * extension with [on] type clause [T2] iff
+ *
+ *   1. The latter extension is declared in a platform library, and the former
+ *      extension is not
+ *   2. they are both declared in platform libraries or both declared in
+ *      non-platform libraries, and
+ *   3. the instantiated type (the type after applying type inference from the
+ *      receiver) of [T1] is a subtype of the instantiated type of [T2] and
+ *      either
+ *   4. not vice versa, or
+ *   5. the instantiate-to-bounds type of [T1] is a subtype of the
+ *      instantiate-to-bounds type of [T2] and not vice versa.
+ * @description Check that extension from the library is less specific than one
+ * which is not.
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+
+import "../../Utils/expect.dart";
+import "extension_conflict_resolution_lib.dart";
+
+extension MyIntFancyList<T extends String> on List<T> {
+  bool get isIntLibraryVersion => false;
+}
+
+dynamic aList = <int>[1, 2, 3];
+
+main() {
+  Expect.throws(() { aList.isIntLibraryVersion; });
+}
+
diff --git a/LanguageFeatures/Extension-methods/extension_conflict_resolution_lib.dart b/LanguageFeatures/Extension-methods/extension_conflict_resolution_lib.dart
index de2f3e6..1d9497d 100644
--- a/LanguageFeatures/Extension-methods/extension_conflict_resolution_lib.dart
+++ b/LanguageFeatures/Extension-methods/extension_conflict_resolution_lib.dart
@@ -9,3 +9,11 @@
 extension MyFancyList<T> on List<T> {
   bool get isLibraryVersion => true;
 }
+
+extension MyNumList<T extends num> on List<T> {
+bool get isNumLibraryVersion => true;
+}
+
+extension MyIntList<T extends int> on List<T> {
+  bool get isIntLibraryVersion => true;
+}