#392. Tests for syntax scope added
diff --git a/LanguageFeatures/Extension-methods/my_fancy_list_lib.dart b/LanguageFeatures/Extension-methods/my_fancy_list_lib.dart
index 40039c9..ff56b95 100644
--- a/LanguageFeatures/Extension-methods/my_fancy_list_lib.dart
+++ b/LanguageFeatures/Extension-methods/my_fancy_list_lib.dart
@@ -12,3 +12,8 @@
   List<List<T>> split(int at) => <List<T>>[this.sublist(0, at), this.sublist(at)];
   static String get className => "List";
 }
+
+extension _MyPrivateList<T> on List<T> {
+  int get pDoubleLength => this.length * 2;
+  static String get pClassName => "_MyPrivateList";
+}
diff --git a/LanguageFeatures/Extension-methods/my_fancy_list_lib2.dart b/LanguageFeatures/Extension-methods/my_fancy_list_lib2.dart
new file mode 100644
index 0000000..c5544eb
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/my_fancy_list_lib2.dart
@@ -0,0 +1,19 @@
+/*
+ * 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.
+ */
+// SharedOptions=--enable-experiment=extension-methods
+library my_fancy_list_lib2;
+
+extension MyFancyList<T> on List<T> {
+  int get doubleLength => this.length * 2;
+  List<T> operator-() => this.reversed.toList();
+  List<List<T>> split(int at) => <List<T>>[this.sublist(0, at), this.sublist(at)];
+  static String get className => "List";
+}
+
+extension _MyPrivateList<T> on List<T> {
+  int get pDoubleLength => this.length * 2;
+  static String get pClassName => "_MyPrivateList";
+}
diff --git a/LanguageFeatures/Extension-methods/syntax_scope_t01.dart b/LanguageFeatures/Extension-methods/syntax_scope_t01.dart
new file mode 100644
index 0000000..1fa789c
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/syntax_scope_t01.dart
@@ -0,0 +1,38 @@
+/*
+ * 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 an extension declaration is a top-level declaration with a grammar
+ * similar to:
+ * <extension> ::=
+ *   `extension' <identifier>? <typeParameters>? `on' <type> `?'? `{'
+ *     memberDeclaration*
+ *   `}'
+ * ...
+ * An extension declaration with a non-private name is included in the library's
+ * export scope, and a privately named extension is not. It is a compile-time
+ * error to export two declarations, including extensions, with the same name,
+ * whether they come from declarations in the library itself or from export
+ * declarations (with the usual exception when all but one declaration come from
+ * platform libraries). Extension members with private names are simply
+ * inaccessible in other libraries.
+ *
+ * @description Check that the member declarations can be any non-abstract
+ * static or instance member
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+import "../../Utils/expect.dart";
+import "my_fancy_list_lib.dart";
+
+test(list) {
+  Expect.throws(() {
+    list.pDoubleLength;
+  }, (e) => e is NoSuchMethodError);
+}
+
+main() {
+  test(["Lily", "was", "here"]);
+}
diff --git a/LanguageFeatures/Extension-methods/syntax_scope_t02.dart b/LanguageFeatures/Extension-methods/syntax_scope_t02.dart
new file mode 100644
index 0000000..0000cfe
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/syntax_scope_t02.dart
@@ -0,0 +1,32 @@
+/*
+ * 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 an extension declaration is a top-level declaration with a grammar
+ * similar to:
+ * <extension> ::=
+ *   `extension' <identifier>? <typeParameters>? `on' <type> `?'? `{'
+ *     memberDeclaration*
+ *   `}'
+ * ...
+ * An extension declaration with a non-private name is included in the library's
+ * export scope, and a privately named extension is not. It is a compile-time
+ * error to export two declarations, including extensions, with the same name,
+ * whether they come from declarations in the library itself or from export
+ * declarations (with the usual exception when all but one declaration come from
+ * platform libraries). Extension members with private names are simply
+ * inaccessible in other libraries.
+ *
+ * @description Check that the member declarations can be any non-abstract
+ * static or instance member
+ * @compile-error
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+import "my_fancy_list_lib.dart";
+
+main() {
+  List.pClassName;
+}
diff --git a/LanguageFeatures/Extension-methods/syntax_scope_t03.dart b/LanguageFeatures/Extension-methods/syntax_scope_t03.dart
new file mode 100644
index 0000000..885ec68
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/syntax_scope_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 an extension declaration is a top-level declaration with a grammar
+ * similar to:
+ * <extension> ::=
+ *   `extension' <identifier>? <typeParameters>? `on' <type> `?'? `{'
+ *     memberDeclaration*
+ *   `}'
+ * ...
+ * An extension declaration with a non-private name is included in the library's
+ * export scope, and a privately named extension is not. It is a compile-time
+ * error to export two declarations, including extensions, with the same name,
+ * whether they come from declarations in the library itself or from export
+ * declarations (with the usual exception when all but one declaration come from
+ * platform libraries). Extension members with private names are simply
+ * inaccessible in other libraries.
+ *
+ * @description Check that It is a compile-time error to export two
+ * declarations, including extensions, with the same name
+ * @compile-error
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+import "my_fancy_list_lib.dart";
+export "my_fancy_list_lib.dart";
+
+extension MyFancyList<T> on List<T> {
+  int get doubleLength => this.length * 2;
+  List<T> operator-() => this.reversed.toList();
+  List<List<T>> split(int at) => <List<T>>[this.sublist(0, at), this.sublist(at)];
+  static String get className => "List";
+}
+
+main() {
+  List<String> list = ["Lily", "was", "here"];
+}
diff --git a/LanguageFeatures/Extension-methods/syntax_scope_t04.dart b/LanguageFeatures/Extension-methods/syntax_scope_t04.dart
new file mode 100644
index 0000000..e71099a
--- /dev/null
+++ b/LanguageFeatures/Extension-methods/syntax_scope_t04.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 an extension declaration is a top-level declaration with a grammar
+ * similar to:
+ * <extension> ::=
+ *   `extension' <identifier>? <typeParameters>? `on' <type> `?'? `{'
+ *     memberDeclaration*
+ *   `}'
+ * ...
+ * An extension declaration with a non-private name is included in the library's
+ * export scope, and a privately named extension is not. It is a compile-time
+ * error to export two declarations, including extensions, with the same name,
+ * whether they come from declarations in the library itself or from export
+ * declarations (with the usual exception when all but one declaration come from
+ * platform libraries). Extension members with private names are simply
+ * inaccessible in other libraries.
+ *
+ * @description Check that It is a compile-time error to export two
+ * declarations, including extensions, with the same name
+ * @compile-error
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=extension-methods
+import "my_fancy_list_lib.dart";
+export "my_fancy_list_lib.dart";
+import "my_fancy_list_lib2.dart";
+export "my_fancy_list_lib2.dart";
+
+main() {
+  List<String> list = ["Lily", "was", "here"];
+}