diff --git a/LanguageFeatures/Enhanced-Enum/semantics_A06_t08.dart b/LanguageFeatures/Enhanced-Enum/semantics_A06_t08.dart
new file mode 100644
index 0000000..ec62e6c
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/semantics_A06_t08.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 The semantics of such an enum declaration, E, is defined as
+/// introducing a (semantic) class, C, just like a similar class declaration.
+/// ...
+/// Enum values: For each <enumEntry> with name id and index i in the
+/// comma-separated list of enum entries, a constant value is created, and a
+/// static constant variable named id is created in C with that value. All the
+/// constant values are associated, in some implementation dependent way, with
+///
+/// their name id as a string "id",
+///
+/// their index i as an int, and
+/// their enum class’s name as a string, "Name",
+/// all of which is accessible to the toString and index member of Enum, and to
+/// the EnumName.name extension getter. The values are computed as follows.
+///
+/// id ↦ Name() (no arguments, equivalent to empty argument list)
+/// id(args) ↦ Name(args)
+/// id<types>(args) ↦ Name<types>(args)
+/// id.named(args) ↦ Name._$named(args)
+/// id<types>.named(args) ↦ Name<types>._$named(args)
+/// where args are considered as occurring in a const context, and it’s a
+/// compile-time error if they are then not compile-time constants.
+///
+/// @description Check that it is a compile time error if member is called with
+/// a wrong type
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+enum E<T> {
+  e1<int>(),
+  e2<String>(),
+  e3<bool>();
+
+  T foo(T t) => t;
+}
+
+main() {
+  E.e1.foo("42");
+//         ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  E.e2.foo(42);
+//         ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  E.e3.foo(42);
+//         ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/Enhanced-Enum/semantics_A09_t10.dart b/LanguageFeatures/Enhanced-Enum/semantics_A09_t10.dart
new file mode 100644
index 0000000..14a6082
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/semantics_A09_t10.dart
@@ -0,0 +1,53 @@
+// 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 the resulting class would have any naming conflicts, or other
+/// compile-time errors, the enum declaration is invalid and a compile-time
+/// error occurs. Such errors include, but are not limited to:
+///
+/// Declaring or inheriting (from Enum or from a declared mixin or interface)
+/// any member with the same basename as an enum value which is not a static
+/// setter. (The introduced static declarations would have a conflict.)
+///
+/// @description Check that it is not a compile-time error to declare static
+/// setter with the same basename as enum value
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+import "../../Utils/expect.dart";
+
+enum E1 {
+  e1,
+  e2,
+  e3;
+
+  static void set e1(E1 val) {
+    Expect.equals(E1.e2, val);
+  }
+}
+
+enum E2<T> {
+  e1<int>(42),
+  e2<String>("42"),
+  e3<bool>(false);
+
+  const E2(T t);
+  static void set e1(E2<int> val) {
+    Expect.equals(E2.e1, val);
+  }
+  static void set e2(E2<String> val) {
+    Expect.equals(E2.e2, val);
+  }
+  static void set e3(E2<bool> val) {
+    Expect.equals(E2.e3, val);
+  }
+}
+
+main() {
+  E1.e1 = E1.e2;
+  E2.e1 = E2.e1;
+  E2.e2 = E2.e2;
+  E3.e3 = E2.e3;
+}
diff --git a/LanguageFeatures/Enhanced-Enum/semantics_A09_t11.dart b/LanguageFeatures/Enhanced-Enum/semantics_A09_t11.dart
new file mode 100644
index 0000000..2166ceb
--- /dev/null
+++ b/LanguageFeatures/Enhanced-Enum/semantics_A09_t11.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 If the resulting class would have any naming conflicts, or other
+/// compile-time errors, the enum declaration is invalid and a compile-time
+/// error occurs. Such errors include, but are not limited to:
+///
+/// Declaring or inheriting (from Enum or from a declared mixin or interface)
+/// any member with the same basename as an enum value which is not a static
+/// setter. (The introduced static declarations would have a conflict.)
+///
+/// @description Check that it is a compile-time error to declare static
+/// setter with the same basename as enum value but wrong type
+/// @author sgrekhov@unipro.ru
+
+// SharedOptions=--enable-experiment=enhanced-enums
+
+enum E1 {
+  e1,
+  e2,
+  e3;
+
+  static void set e1(int val) {}
+//                   ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+enum E2<T> {
+  e1<int>(42),
+  e2<String>("42"),
+  e3<bool>(false);
+
+  const E2(T t);
+  static void set e1(E2<String> val) {}
+//                      ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  static void set e2(E2<bool> val) {}
+//                      ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  static void set e3(E2<int> val) {}
+//                      ^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  E1.e1;
+  E2.e1;
+  E2.e2;
+  E3.e3;
+}
