Issue #1087: New tests for unnamed constructor tear offs added; missing enable-experiment tags added.
diff --git a/LanguageFeatures/Constructor-tear-offs/goal_t01_A01.dart b/LanguageFeatures/Constructor-tear-offs/goal_t01_A01.dart
index 13fea4d..4d80a20 100644
--- a/LanguageFeatures/Constructor-tear-offs/goal_t01_A01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/goal_t01_A01.dart
@@ -22,6 +22,8 @@
 /// constructions.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/goal_t01_A02.dart b/LanguageFeatures/Constructor-tear-offs/goal_t01_A02.dart
index 7e19f33..b721181 100644
--- a/LanguageFeatures/Constructor-tear-offs/goal_t01_A02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/goal_t01_A02.dart
@@ -22,6 +22,8 @@
 /// constructions
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/goal_t01_A03.dart b/LanguageFeatures/Constructor-tear-offs/goal_t01_A03.dart
index ffec8b0..3cfc1a3 100644
--- a/LanguageFeatures/Constructor-tear-offs/goal_t01_A03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/goal_t01_A03.dart
@@ -22,6 +22,8 @@
 /// constructions
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T extends num> {
diff --git a/LanguageFeatures/Constructor-tear-offs/goal_t01_A04.dart b/LanguageFeatures/Constructor-tear-offs/goal_t01_A04.dart
index 752c463..3d49353 100644
--- a/LanguageFeatures/Constructor-tear-offs/goal_t01_A04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/goal_t01_A04.dart
@@ -22,6 +22,8 @@
 /// correctly for the generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C<T extends int> {
   C.constr(int i) {}
 }
@@ -43,7 +45,7 @@
 // [cfe] unspecified
 
   var v4 = C.constr<int, int>;
-//                       ^
+//                     ^
 // [analyzer] unspecified
 // [cfe] unspecified
 
@@ -53,7 +55,7 @@
 // [cfe] unspecified
 
   var v6 = (C.constr)<int, int>;
-//                      ^
+//                       ^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t01.dart
index 0898fca..75cad65 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t01.dart
@@ -17,10 +17,12 @@
 /// non-generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
-  static bool called = false;
+  final bool called = false;
   C.constr(int i) {
     called = true;
   }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t02.dart
index 6da519d..bfe3f39 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t02.dart
@@ -17,10 +17,12 @@
 /// arguments is allowed for a generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
-  static bool called = false;
+  bool called = false;
   C.constr(int i) {
     Expect.isTrue(T == dynamic);
     called = true;
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t03.dart
index 81f1892..f4fd483 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t03.dart
@@ -17,10 +17,12 @@
 /// is allowed for a generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
-  static bool called = false;
+  bool called = false;
   C.constr(int i) {
     Expect.isTrue(T == int);
     called = true;
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t04.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t04.dart
index af71720..8ef10cb 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A01_t04.dart
@@ -17,6 +17,8 @@
 /// named constructor.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C<T> {
   C.constr(int i) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t01.dart
index 5120625..37e6c5d 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t01.dart
@@ -13,6 +13,8 @@
 /// @description Checks constructor tear-off expression for non-generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t02.dart
index 0738cfe..e5226b9 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A02_t02.dart
@@ -13,6 +13,8 @@
 /// @description Checks constructor tear-off expression for generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t01.dart
index 23440c7..c2cf9be 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t01.dart
@@ -11,6 +11,8 @@
 /// is not allowed for a non-generic class.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr(int i) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t02.dart
index e6dea21..438886a 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t02.dart
@@ -13,6 +13,8 @@
 /// arguments to [C].
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t03.dart
index 2bc0358..c4991ac 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t03.dart
@@ -13,6 +13,8 @@
 /// arguments to [C] - test case with the several type parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T1, T2 extends num, T3 extends String> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t04.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t04.dart
index a62d15b..f4cb862 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t04.dart
@@ -13,23 +13,25 @@
 /// arguments to [C] - test case with the different type parameter numbers.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C<T1, T2 extends num, T3 extends String> {
   C.constr(exp1, exp2, exp3) {}
 }
 
 main() {
   C<dynamic>.constr;
-//         ^
+//  ^
 // [analyzer] unspecified
 // [cfe] unspecified
 
   C<dynamic, num>.constr;
-//              ^
+//  ^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  C<dynamic, num, String, dynamic>.constr;
-//                      ^
+  C<String, num, dynamic>.constr;
+//               ^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t05.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t05.dart
index d0b935c..d4cfeeb 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t05.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t05.dart
@@ -13,6 +13,8 @@
 /// arguments to [C] - test incorrect type parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C<T1 extends int> {
   C.constr(exp1, exp2, exp3) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t06.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t06.dart
index 8e9718a..bfe722c 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t06.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A03_t06.dart
@@ -13,6 +13,8 @@
 /// arguments to [C] - test incorrect type arguments.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C<T> {
   C.constr() {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t01.dart
index 13d6cd9..14da224 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t01.dart
@@ -13,6 +13,8 @@
 /// @description Checks that [params] is exactly the same parameter list.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t02.dart
index 62156a2..7ef90b2 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t02.dart
@@ -14,6 +14,8 @@
 /// list test constructor without arguments.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr() {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t03.dart
index bf7f5ba..5f11aac 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t03.dart
@@ -14,6 +14,8 @@
 /// list - test case with one [int] argument.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr(num i) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t04.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t04.dart
index 0121c72..280248e 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t04.dart
@@ -14,6 +14,8 @@
 /// list - test case with one [dynamic] argument.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr(i) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t05.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t05.dart
index f964f80..6d00414 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t05.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t05.dart
@@ -14,6 +14,8 @@
 /// list - test case with several argument.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr(int i, String j, List<int> l) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t06.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t06.dart
index 19f6838..a0bded9 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t06.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t06.dart
@@ -13,6 +13,8 @@
 /// @description Checks that initializing formals are represented by normal
 /// parameters with the same name and type.
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t07.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t07.dart
index 903ace8..ceab7a3 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t07.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t07.dart
@@ -13,6 +13,8 @@
 /// @description Checks statically that initializing formals are represented by
 /// normal parameters with the same name and type.
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   int x;
   dynamic y;
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t08.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t08.dart
index c3fe4be..f4a9419 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t08.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t08.dart
@@ -13,9 +13,11 @@
 /// @description Checks statically that initializing formals are represented by
 /// normal parameters with the same name and type.
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   int x;
-  dynamic y;
+  String y;
   C.name(this.x, this.y);
 }
 
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t09.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t09.dart
index f01e99a..54f3cd8 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t09.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t09.dart
@@ -14,6 +14,8 @@
 /// named parameters
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t10.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t10.dart
index 7293a54..792b20d 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t10.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t10.dart
@@ -14,6 +14,8 @@
 /// parameters with the same name and type - test named parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t11.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t11.dart
index 24800d7..07030a1 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t11.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t11.dart
@@ -14,6 +14,8 @@
 /// incorrect named arguments dynamically.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t12.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t12.dart
index 41f8116..b56bfce 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t12.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t12.dart
@@ -14,6 +14,8 @@
 /// incorrect named arguments statically.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr({int? j, String s = "testme"}) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t13.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t13.dart
index ae56e3a..cecd79e 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t13.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t13.dart
@@ -14,6 +14,8 @@
 /// normal parameters with the same name and type - test named parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   int? j = 0;
   String s = "";
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t14.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t14.dart
index 8e3ce59..3a6b758 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t14.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t14.dart
@@ -14,6 +14,8 @@
 /// additional parameters
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t15.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t15.dart
index e2cdb26..ed7a411 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t15.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t15.dart
@@ -14,6 +14,8 @@
 /// parameters with the same name and type - test additional parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t16.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t16.dart
index 7b06c2a..9b59bc8 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t16.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t16.dart
@@ -14,6 +14,8 @@
 /// incorrect additional arguments dynamically.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t17.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t17.dart
index 0199f6c..7f05f27 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t17.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t17.dart
@@ -14,6 +14,8 @@
 /// incorrect additional arguments statically.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr([int? j, String s = "testme"]) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t18.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t18.dart
index 66f9eda..fc22234 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t18.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t18.dart
@@ -14,6 +14,8 @@
 /// normal parameters with the same name and type - test additional parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   int? j = 0;
   String s = "";
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t19.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t19.dart
index 893844a..2d5de01 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t19.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t19.dart
@@ -14,6 +14,8 @@
 /// required named parameter.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t20.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t20.dart
index 64b2bf0..779bde5 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t20.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t20.dart
@@ -14,6 +14,8 @@
 /// parameters with the same name and type - test required named parameter.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t21.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t21.dart
index 0a59000..05a5c73 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t21.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t21.dart
@@ -14,6 +14,8 @@
 /// incorrect required named arguments statically.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   C.constr({required int i}) {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t22.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t22.dart
index 085f95e..3940af3 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t22.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A04_t22.dart
@@ -15,9 +15,10 @@
 /// parameter.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C {
   int? i;
-
   C.constr({required this.i});
 }
 
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t01.dart
index bee83a6..35ad417 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t01.dart
@@ -12,6 +12,8 @@
 /// @description Checks that type arguments can be implicitly instantiated.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T1, T2 extends num, T3 extends String> {
@@ -20,6 +22,8 @@
 }
 
 main() {
-  Expect.isTrue(C.constr is C Function<T1 extends dynamic, T2 extends num, T3 extends String>());
-  Expect.isTrue(C.constr1 is C Function<T1 extends dynamic, T2 extends num, T3 extends String>(T1, T2));
+  Expect.isTrue(C.constr is
+    C Function<T1 extends dynamic, T2 extends num, T3 extends String>());
+  Expect.isTrue(C.constr1 is
+    C Function<T1 extends dynamic, T2 extends num, T3 extends String>(T1, T2));
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t02.dart
index 7741bab..d59a5fa 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A05_t02.dart
@@ -12,6 +12,8 @@
 /// @description Checks that type arguments can be implicitly instantiated.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T1, T2 extends num, T3 extends String> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t01.dart
index a8aed24..a332fec 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t01.dart
@@ -12,6 +12,8 @@
 /// [C<typeArgs>.name.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T1, T2 extends num, T3 extends String> {
@@ -21,14 +23,20 @@
 
 main() {
   var v1 = C<dynamic, num, String>.constr;
-  Expect.isTrue(v1 is C Function<T1 extends dynamic, T2 extends num, T3 extends String>());
+  Expect.isTrue(v1 is
+    C Function<T1 extends dynamic, T2 extends num, T3 extends String>());
 
   var v2 = C<dynamic, num, String>.constr1;
-  Expect.isTrue(v2 is C Function<T1 extends dynamic, T2 extends num, T3 extends String>(dynamic, num));
+  Expect.isTrue(v2 is C Function<T1 extends dynamic,
+      T2 extends num,
+      T3 extends String>(dynamic, num));
 
   var v3 = C<List<int>, int, String>.constr;
-  Expect.isTrue(v3 is C Function<T1 extends List<int>, T2 extends int, T3 extends String>());
+  Expect.isTrue(v3 is
+    C Function<T1 extends List<int>, T2 extends int, T3 extends String>());
 
   var v4 = C<List<int>, int, String>.constr1;
-  Expect.isTrue(v3 is C Function<T1 extends List<int>, T2 extends int, T3 extends String>(List<int>, int));
+  Expect.isTrue(v3 is C Function<T1 extends List<int>,
+      T2 extends int,
+      T3 extends String>(List<int>, int));
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t02.dart
index d995679..0771288 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A06_t02.dart
@@ -13,6 +13,8 @@
 /// constructor tearing off.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T1, T2 extends num, T3 extends String> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart
index 7d2ca52..4f589a4 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t01.dart
@@ -12,6 +12,8 @@
 /// the same function value: test default constructor
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart
index ab4581c..b9007d4 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t02.dart
@@ -12,6 +12,8 @@
 /// the same function value: test named constructors
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart
index 9297941..6be5c48 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t03.dart
@@ -12,6 +12,8 @@
 /// the same function value: test constructors with initializing formals.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart
index 4b7c1b3..7597f6f 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t04.dart
@@ -12,6 +12,8 @@
 /// the same function value: test constructors with named parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart
index 6788117..c1f5ad1 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t05.dart
@@ -12,6 +12,8 @@
 /// the same function value: test constructors with optional parameters.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart
index 1ffe66f..e458102 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t06.dart
@@ -12,6 +12,8 @@
 /// the same function value: test generic constructor.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart
index df765fb..be90b98 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A07_t07.dart
@@ -12,6 +12,8 @@
 /// the same function value: test generic constructor.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T1 extends int, T2, T3 extends List> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t01.dart
index ac746ae..b7a300e 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t01.dart
@@ -10,6 +10,8 @@
 /// class
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class MyClass {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t02.dart
index cf5a995..2ead742 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t02.dart
@@ -9,6 +9,8 @@
 /// canonicalized if the instantiating types are constant - test generic class
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class MyClass<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t03.dart
index 860b6ef..623308a 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t03.dart
@@ -9,6 +9,8 @@
 /// instantiating types are not constant - test non-generic class
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class MyClass {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t04.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t04.dart
index 1400abd..4bc4ce1 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_A08_t04.dart
@@ -9,6 +9,8 @@
 /// instantiating types are not constant - test generic class
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class MyClass<T1 extends String, T2 extends num> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart
index 5debb41..c2d2d17 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A01.dart
@@ -10,6 +10,8 @@
 /// expressions are the same - test non-generic class
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart
index 80e8330..c9c051d 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A02.dart
@@ -10,6 +10,8 @@
 /// expressions are the same - test generic class with default type arguments
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart
index d7935ba..1fd4e59 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t09_A03.dart
@@ -10,6 +10,8 @@
 /// expressions are the same - test generic class
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class C<T> {
diff --git a/LanguageFeatures/Constructor-tear-offs/named_constructor_t10_A01.dart b/LanguageFeatures/Constructor-tear-offs/named_constructor_t10_A01.dart
index e5b7e56..20b8dd0 100644
--- a/LanguageFeatures/Constructor-tear-offs/named_constructor_t10_A01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/named_constructor_t10_A01.dart
@@ -14,6 +14,8 @@
 /// allowed.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 class C<T> {
   C() {}
 }
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t01.dart
index 288246e..d344303 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t01.dart
@@ -11,6 +11,8 @@
 /// List<int>;] and filled constructor is teared of in this case.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef IntList = List<int>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t02.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t02.dart
index 3c66d96..8828d63 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A01_t02.dart
@@ -11,7 +11,7 @@
 /// off constructor.
 /// @author iarkh@unipro.ru
 
-import "../../Utils/expect.dart";
+// SharedOptions=--enable-experiment=constructor-tearoffs
 
 typedef IntList = List<int>;
 
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t01.dart
index e066471..b47f8b9 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t01.dart
@@ -12,6 +12,8 @@
 /// [List].
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList = List;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t02.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t02.dart
index eb4e207..eb7ec8f 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t02.dart
@@ -12,6 +12,8 @@
 /// [List<num?>].
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList = List<num?>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t03.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t03.dart
index e02522c..d613477 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t03.dart
@@ -12,6 +12,8 @@
 /// negative static case for raw List.
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 typedef MyList = List;
 
 main() {
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t04.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t04.dart
index 6d55e14..5dd8202 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t04.dart
@@ -12,6 +12,8 @@
 /// negative static case for [List<int>].
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 typedef MyList = List<int>;
 
 main() {
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t05.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t05.dart
index 41f05b8..eed6e15 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t05.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A02_t05.dart
@@ -12,6 +12,8 @@
 /// negative dynamic case for [List<int>].
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList = List<int>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t01.dart
index c5f8ab0..63cdffe 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t01.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList<T> = List<T>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t02.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t02.dart
index cd8703b..7b4a981 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t02.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 typedef MyList<T> = List<T>;
 
 main() {
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t03.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t03.dart
index e188cb9..db8e9cc 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t03.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList<T> = List<T>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t04.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t04.dart
index 2fe4238..844e7db 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t04.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t04.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList<T extends num> = List<T>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t05.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t05.dart
index b23bf91..3c4d5fa 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t05.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t05.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 typedef MyList<T extends num> = List<T>;
 
 main() {
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t06.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t06.dart
index 0cf2c02..031a641 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t06.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t06.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList<T extends num> = List<T>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t07.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t07.dart
index 5c08fa7..6837065 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t07.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A03_t07.dart
@@ -12,6 +12,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList<T extends num> = List<T>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t01.dart
index 2057742..99f5aba 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t01.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t01.dart
@@ -2,11 +2,11 @@
 // 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.
 
-/// If the type alias is not instantiated, then it's a function from types to
-/// types, not an alias for a single type, and tearing off a constructor works
-/// equivalently to tearing off a corresponding generic function where the
-/// generics match the type alias, not the underlying class. The result is a
-/// compile-time constant.
+/// @assertion If the type alias is not instantiated, then it's a function from
+/// types to types, not an alias for a single type, and tearing off a
+/// constructor works equivalently to tearing off a corresponding generic
+/// function where the generics match the type alias, not the underlying class.
+/// The result is a compile-time constant.
 ///
 /// @description Checks that if type alias is not instantiated, tearing off a
 /// constructor works equivalently to tearing off a corresponding generic
@@ -14,6 +14,8 @@
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef MyList<T> = List<T>;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t02.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t02.dart
index b64d3f7..570dabe 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t02.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t02.dart
@@ -2,17 +2,19 @@
 // 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.
 
-/// If the type alias is not instantiated, then it's a function from types to
-/// types, not an alias for a single type, and tearing off a constructor works
-/// equivalently to tearing off a corresponding generic function where the
-/// generics match the type alias, not the underlying class. The result is a
-/// compile-time constant.
+/// @assertion If the type alias is not instantiated, then it's a function from
+/// types to types, not an alias for a single type, and tearing off a
+/// constructor works equivalently to tearing off a corresponding generic
+/// function where the generics match the type alias, not the underlying class.
+/// The result is a compile-time constant.
 ///
 /// @description Checks that the result of the not instantiated type alias
 /// tearing off is a compile-time constant.
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 typedef IntList = List;
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t03.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t03.dart
index 690cebc..86284d2 100644
--- a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t03.dart
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A04_t03.dart
@@ -2,17 +2,19 @@
 // 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.
 
-/// If the type alias is not instantiated, then it's a function from types to
-/// types, not an alias for a single type, and tearing off a constructor works
-/// equivalently to tearing off a corresponding generic function where the
-/// generics match the type alias, not the underlying class. The result is a
-/// compile-time constant.
+/// @assertion If the type alias is not instantiated, then it's a function from
+/// types to types, not an alias for a single type, and tearing off a
+/// constructor works equivalently to tearing off a corresponding generic
+/// function where the generics match the type alias, not the underlying class.
+/// The result is a compile-time constant.
 ///
 /// @description Checks that the result of the not instantiated type alias
 /// tearing off is a compile-time constant.
 ///
 /// @author iarkh@unipro.ru
 
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
 import "../../Utils/expect.dart";
 
 class A<T extends num> {
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A05_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A05_t01.dart
new file mode 100644
index 0000000..312a08e
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A05_t01.dart
@@ -0,0 +1,30 @@
+// Copyright (c) 2021, 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 Example:
+///
+//   typedef ListList<T> = List<List<T>>;
+//   Corresponding factory function
+//   List<List<T>> ListList$filled$tearoff<T>(int length, List<T> value) =>
+//     List<List<T>>.filled(length, value);
+///
+/// @description Checks example 1 from the Spec
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+typedef ListList<T> = List<List<T>>;
+
+main() {
+  Expect.notEquals(List<List>.filled, ListList.filled);
+
+  Expect.identical(List<List<dynamic>>.filled, ListList<dynamic>.filled);
+  Expect.identical(List<List<int>>.filled, ListList<int>.filled);
+  Expect.identical(List<List<Never>>.filled, ListList<Never>.filled);
+  Expect.identical(List<List<Null>>.filled, ListList<Null>.filled);
+  Expect.identical(List<List<List>>.filled, ListList<List>.filled);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A06_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A06_t01.dart
new file mode 100644
index 0000000..46b0f48
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A06_t01.dart
@@ -0,0 +1,41 @@
+// Copyright (c) 2021, 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 Example:
+///
+///   typedef MyList<T> = List<T>;
+///   typedef MyList2<T extends num> = List<T>;
+///   void main() {
+///     // Instantiated type aliases use the aliased type.
+///     print(identical(MyList<int>.filled, MyList2<int>.filled)); // true
+///     print(identical(MyList<int>.filled, List<int>.filled)); // true
+///     print(identical(MyList2<int>.filled, List<int>.filled)); // true
+///     // Non-instantiated type aliases have their own generic function.
+///     print(identical(MyList.filled, MyList.filled)); // true
+///     print(identical(MyList2.filled, MyList2.filled)); // true
+///     print(identical(MyList.filled, MyList2.filled)); // false
+///     print(identical(MyList.filled, List.filled)); // false (!)
+///   }
+///
+/// @description Checks example 2 from the Spec
+///
+/// @author iarkh@unipro.ru
+
+import "../../Utils/expect.dart";
+
+typedef MyList<T> = List<T>;
+typedef MyList2<T extends num> = List<T>;
+
+void main() {
+  // Instantiated type aliases use the aliased type.
+  Expect.identical(MyList<int>.filled, MyList2<int>.filled);
+  Expect.identical(MyList<int>.filled, List<int>.filled);
+  Expect.identical(MyList2<int>.filled, List<int>.filled);
+
+  // Non-instantiated type aliases have their own generic function.
+  Expect.identical(MyList.filled, MyList.filled);
+  Expect.identical(MyList2.filled, MyList2.filled);
+  Expect.notEquals(MyList.filled, MyList2.filled);
+  Expect.notEquals(MyList.filled, List.filled);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A07_t01.dart b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A07_t01.dart
new file mode 100644
index 0000000..4c652b5
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/tearing_off_from_typedef_A07_t01.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2021, 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 We do not try to distinguish the cases where the type arguments
+/// are passed directly to the original class in the same order vs. those where
+/// they are modified along the way.
+///
+/// @description Checks case where type argument is not passed directly to the
+/// original class
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A<T1, T2> {
+  A.testme() {}
+}
+typedef AAlias<X, Y> = A<X, Y>;
+
+class B<T1, T2> {
+  var v1 = AAlias.testme;
+  var v2 = AAlias.testme;
+}
+
+main() {
+  B b1 = B();
+  Expect.notEquals(b1.v1, b1.v2);
+
+  B b2 = B<int, String>();
+  Expect.identical(b2.v1, b2.v2);
+  Expect.identical(A<int, String>.testme, b2.v2);
+
+  B b3 = B<Never, List>();
+  Expect.identical(b3.v1, b3.v2);
+  Expect.identical(A<Never, List>.testme, b3.v1);
+
+  B b4 = B<dynamic, List<int>>();
+  Expect.identical(b4.v1, b4.v2);
+  Expect.identical(A<dynamic, List<int>>.testme, b3.v1);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A01_t01.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A01_t01.dart
new file mode 100644
index 0000000..c181e2c
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A01_t01.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2021, 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 [C] denotes a class, an expression of [C] by itself already
+/// has a meaning, it evaluates to a [Type] object representing the class, so it
+/// cannot also denote the unnamed constructor.
+///
+/// @description Checks that class name cannot denote the unnamed constructor.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+class A<T> {
+  A();
+}
+
+main() {
+  var v = A.A;
+//          ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A02_t01.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A02_t01.dart
new file mode 100644
index 0000000..3160027
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A02_t01.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2021, 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 Because of that, we introduce a [new] syntax that can be used to
+/// denote the unnamed constructor: [C.new]. It can be used in every place where
+/// a named constructor can be referenced, but will instead denote the unnamed
+/// constructor, and it can be used to tear off the unnamed constructor without
+/// interfering with using the class name to denote the [Type] object.
+///
+///    class C {
+///      final int x;
+///      const C.new(this.x); // declaration.
+///    }
+///
+///    class D extend C {
+///      D(int x) : super.new(x * 2); // super constructor reference.
+///    }
+///
+///    void main() {
+///      D.new(1); // normal invocation.
+///      const C.new(1); // const invocation.
+///      new C.new(1); // explicit new invocation.
+///      var f = C.new; // tear-off.
+///      f(1);
+///    }
+///  }
+///
+/// @description Checks the example from the Spec.
+///
+/// @Issue 46198
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class C {
+  final int x;
+  const C.new(this.x);
+}
+
+class D extends C {
+  D(int x) : super.new(x * 2);
+}
+
+void main() {
+  D d = D.new(1);
+  Expect.Equals(d.x, 2);
+
+  const c = C.new(3);
+  Expect.Equals(c.x, 6);
+
+  var c1 = new C.new(7);
+  Expect.Equals(c1.x, 14);
+
+  var f = C.new;
+  int i = f(-1).x;
+  Expect.Equals(i, -2);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t01.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t01.dart
new file mode 100644
index 0000000..c03f38b
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t01.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2021, 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 Apart from the tear-off, this code will mean exactly the same
+/// thing as the same code without the .new.
+///
+/// @description Checks that [new] call is equivalent with the default
+/// constructor call. Tests non-generic class.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A {
+  static int called = 0;
+  A() {
+    called++;
+  }
+}
+
+main() {
+  A a = A.new();
+  Expect.equals(1, A.called);
+
+  A();
+  Expect.equals(2, A.called);
+
+  A.new();
+  Expect.equals(3, A.called);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t02.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t02.dart
new file mode 100644
index 0000000..6463386
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t02.dart
@@ -0,0 +1,55 @@
+// Copyright (c) 2021, 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 Apart from the tear-off, this code will mean exactly the same
+/// thing as the same code without the .new.
+///
+/// @description Checks that [new] call is equivalent with the default
+/// constructor call. Tests super constructor reference.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A {
+  static int called_a = 0;
+  A() {
+    called_a++;
+  }
+}
+
+class B extends A {
+  static int called_b = 0;
+  B() : super() {
+    called_b++;
+  }
+}
+
+main() {
+  B b = B.new();
+  Expect.equals(1, A.called_a);
+  Expect.equals(1, B.called_b);
+
+  B();
+  Expect.equals(2, A.called_a);
+  Expect.equals(2, B.called_b);
+
+  A.new();
+  Expect.equals(3, A.called_a);
+  Expect.equals(2, B.called_b);
+
+  B.new();
+  Expect.equals(4, A.called_a);
+  Expect.equals(3, B.called_b);
+
+  A();
+  Expect.equals(5, A.called_a);
+  Expect.equals(3, B.called_b);
+
+  B();
+  Expect.equals(6, A.called_a);
+  Expect.equals(4, B.called_b);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t03.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t03.dart
new file mode 100644
index 0000000..16fdb76
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t03.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2021, 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 Apart from the tear-off, this code will mean exactly the same
+/// thing as the same code without the .new.
+///
+/// @description Checks that [new] call is equivalent with the default
+/// constructor call. Tests constructor with arguments.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A {
+  int i = 0;
+  String s = "";
+
+  A(this.i, this.s);
+
+  static void check(exp1, exp2) {
+    A a = A.new(exp1, exp2);
+    Expect.equals(exp1, a.i);
+    Expect.equals(exp2, a.s);
+  }
+}
+
+main() {
+  A.check(1, "Testme");
+  A.check(-2, "Stop");
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t04.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t04.dart
new file mode 100644
index 0000000..11db84f
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t04.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2021, 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 Apart from the tear-off, this code will mean exactly the same
+/// thing as the same code without the .new.
+///
+/// @description Checks that [new] call is equivalent with the default
+/// constructor call. Tests generic constructor.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A<T> {
+  int i = 0;
+  String s = "";
+
+  A(this.i, this.s);
+
+  void check(exp1, exp2, exp3) {
+    Expect.equals(exp1, i);
+    Expect.equals(exp2, s);
+    Expect.equals(exp3, T);
+  }
+}
+
+main() {
+  A(1, "Testme").check(1, "Testme", dynamic);
+  A.new(1, "Testme").check(1, "Testme", dynamic);
+
+  A<int>(12345, "").check(12345, "", int);
+  A.new<int>(12345, "").check(12345, "", int);
+
+  A<Never>(0, "0").check(0, "0", Never);
+  A.new<Never>.(0, "0").check(0, "0", Never);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t05.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t05.dart
new file mode 100644
index 0000000..679907c
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t05.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2021, 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 Apart from the tear-off, this code will mean exactly the same
+/// thing as the same code without the .new.
+///
+/// @description Checks that [new] declaration is equivalent with default  \
+/// constructor declaration.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A<T> {
+  int i = 0;
+  String s = "";
+
+  A.new(this.i, this.s);
+
+  void check(exp1, exp2, exp3) {
+    Expect.equals(exp1, i);
+    Expect.equals(exp2, s);
+    Expect.equals(exp3, T);
+  }
+}
+
+main() {
+  A(1, "Testme").check(1, "Testme", dynamic);
+  A.new(1, "Testme").check(1, "Testme", dynamic);
+
+  A<int>(12345, "").check(12345, "", int);
+  A.new<int>(12345, "").check(12345, "", int);
+
+  A<Never>(0, "0").check(0, "0", Never);
+  A.new<Never>.(0, "0").check(0, "0", Never);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t06.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t06.dart
new file mode 100644
index 0000000..cbad226
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t06.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2021, 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 Apart from the tear-off, this code will mean exactly the same
+/// thing as the same code without the .new.
+///
+/// @description Checks that [new] declaration is equivalent with default  \
+/// constructor declaration.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+import "../../Utils/expect.dart";
+
+class A<T> {
+  int i = 0;
+  String s = "";
+
+  A.new(int ii, String ss) {
+    i = ii;
+    s = ss;
+  }
+
+  void check(exp1, exp2, exp3) {
+    Expect.equals(exp1, i);
+    Expect.equals(exp2, s);
+    Expect.equals(exp3, T);
+  }
+}
+
+main() {
+  A(1, "Testme").check(1, "Testme", dynamic);
+  A.new(1, "Testme").check(1, "Testme", dynamic);
+
+  A<int>(12345, "").check(12345, "", int);
+  A.new<int>(12345, "").check(12345, "", int);
+
+  A<Never>(0, "0").check(0, "0", Never);
+  A.new<Never>.(0, "0").check(0, "0", Never);
+}
diff --git a/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t07.dart b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t07.dart
new file mode 100644
index 0000000..ca33fd7
--- /dev/null
+++ b/LanguageFeatures/Constructor-tear-offs/unnamed_constructor_A03_t07.dart
@@ -0,0 +1,49 @@
+// Copyright (c) 2021, 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 [C] denotes a class, an expression of [C] by itself already
+/// has a meaning, it evaluates to a [Type] object representing the class, so it
+/// cannot also denote the unnamed constructor.
+///
+/// @description Checks that it's impossible to have default constructors
+/// declared with [new] syntax and with class name at the same time.
+///
+/// @author iarkh@unipro.ru
+
+// SharedOptions=--enable-experiment=constructor-tearoffs
+
+class A {
+  A() {}
+  A.new() {}
+//  ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+class B {
+  B(int i) {}
+  B.new(int i) {}
+//  ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+class C<T> {
+  C(int i, double j, k) {}
+  C.new() {}
+//  ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+class D<T1 extends List, T2 extends int, T3> {
+  A.new(T3 z) {}
+//  ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  D(T1 x, T2 t) {}
+}
+
+main() {}